O Básico: Express - Rotas
14707 단어 javascriptbraziliandevsbeginnersnode
Roteamento
O que é?
É o aspecto mais básico de uma API HTTP, onde cada rota representa um endpoint e cada endpoint é responsável por uma ação, além de que cada rota pode tratar de diversos métodos HTTP.
O que faz?
Divide a API em diversos "caminhos"pelo quais podemos percorrer, cada caminho deverá ser responsável por uma parte diferente da aplicação e comunicar ao cliente o status da requisição solicitada, bem como retornar dados (se for o caso).
Acessando rotas
Para acessarmos uma rota de nossa API precisamos respeitar duas condições:
Sintaxe
Podemos definir rotas de duas formas diferentes, a primeira opção consiste em utilizar métodos HTTP e definir a rota nos parâmetros, já a segunda opção consiste em definirmos uma rota e a partir dela utilizarmos os métodos HTTP.
A segunda opção é conhecida como encadeamento de rotas e é mais recomendada, pois diminui as chances de qualquer erro ortográfico.
// sintaxe básica para definição de rotas
api./*método HTTP*/(/*path*/, (req, res) => {}):
api.get('/', (req, res) => {});
// encadeamento de rotas
api.route(/*path*/)
./*método HTTP*/((req, res) => {})
./*método HTTP*/((req, res) => {});
api.route('/')
.get((req, res) => {})
.post((req, res) => {});
Parâmetros de Rota
O que são?
São opções que podemos passar para as rotas, a fim de torná-las dinâmicas.
O que fazem?
Os parâmetros permitem a criação de rotas dinâmicas, afinal podemos passar diferentes valores para acessarmos conteúdos diferentes. Dessa forma podemos criar um único endpoint para a interação com diversas informações.
Sintaxe
A maneira como definimos parâmetros de rotas no Express é muito similar a maneira como o definimos no React-Router*, tudo que precisamos fazer é utilizar dois pontos
:
antes do que seria nosso parâmetro.Uma vez definido, podemos desconstruí-lo do objeto de requisição, respeitando sempre o nome que demos em sua definição. Para isso acessamos a propriedade
params
da req
.api.get(/*rota*/:/*parâmetro*/, (req, res) => {
const { /*parâmetro*/ } = req.params;
});
api.get('/recipes/:id', (req, res) => {
const { id } = req.params;
const recipe = recipes.find((r) => r.id === Number(id));
return recipe // se nenuma receita for achada, recipe vai ser undefined
? res.status(200).json(recipe)
: res.status(404).json({ message: 'Recipe not found!' });
});
Query String
O que são?
São parâmetros que podemos passar para as rotas, sendo que diferente dos parâmetros de rotas, vistos anteriormente, podemos encadear quantas Query Strings quisermos.
O que fazem?
Assim como os parâmetros de rotas, as Query Strings permitem a criação de rotas dinâmicas, porém esse recurso é mais utilizado para pesquisas avançadas, na qual podemos pesquisar pelo termo ou outras características do produto.
Sintaxe
Para definirmos Query Strings em um endpoint utilizamos a sintaxe de chave-valor, iniciando-as com um ponto de interrogação
?
e concatenando-as com um E comercial &
.http://localhost:3001/recipes/search?name=panetone&maxPrice=100
Frisando que, diferente dos Parâmetros de Rotas, as Query Strings não são definidas junto do endpoint, mas sim ao acessar determinada rota. Já para conseguirmos ter acesso às Query Strings, tudo que precisamos fazer é desconstruí-las da propriedade
query
do objeto req
.api.get(/*rota*/, (req, res) => {
const { /*query*/ } = req.query;
});
api.get('/recipes/search', (req, res) => {
const { name, maxPrice } = req.query;
const recipe = recipes.filter((r) => (
r.name === name && r.maxPrice <= maxPrice
));
return recipe.length > 0 // se nenhuma receita atender os requisitos, o Array terá tamanho 0
? res.status(200).json(recipe)
: res.status(404).json({ message: 'Recipes not found!' });
});
Informação no Body
O que é?
São informações contidas dentro do Body da requisição HTTP, normalmente temos essas informação em requisições do tipo POST, PUT ou PATCH.
O que faz?
Utilizamos o Body para enviar informações sensíveis ao servidor, pois diferente das informações enviadas pelo Header, essas não são visíveis durante a comunicação, sendo possível acessá-las somente no Back-end.
Sintaxe
Para termos acesso a informação contida no Body da requisição precisamos acessar a propriedade
body
do objeto req
, mas não apenas isso, também é necessário "parsear"a informação do body
e para isso podemos utilizar o método .json()
do próprio Express.Para garantir que todas as nossas informações provenientes do Body sejam convertidas, executamos o método
.json()
nos parâmetros do app.use()
.api.use(express.json());
api.post(/*rota*/, (req, res) => {
const { /*informações*/ } = req.body;
});
api.post('/recipes/', (req, res) => {
const { name, maxPrice } = req.body;
recipes.push({ name, maxPrice });
res.status(201).json({ message: 'Recipe created successfully!' });
});
Reference
이 문제에 관하여(O Básico: Express - Rotas), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/gabrielhsilvestre/o-basico-express-rotas-4i70텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)