This Banner is For Sale !!
Get your ad here for a week in 20$ only and get upto 15k traffic Daily!!!

O Básico: Express – Rotas




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 standing 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:

  1. a primeira é acessarmos o endpoint correto
  2. a segunda é utilizarmos o método que definimos para o endpoint.



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 possibilities de qualquer erro ortográfico.

// sintaxe básica para definição de rotas

api./*método HTTP*/(/*path*/, (req, res) => {}):
api.get('/', (req, res) => {});
Enter fullscreen mode

Exit fullscreen mode

// encadeamento de rotas

api.route(/*path*/)
  ./*método HTTP*/((req, res) => {})
  ./*método HTTP*/((req, res) => {});
api.route('/')
  .get((req, res) => {})
  .submit((req, res) => {});
Enter fullscreen mode

Exit fullscreen mode




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 Categorical é muito related 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.discover((r) => r.id === Quantity(id));

  return recipe  // se nenuma receita for achada, recipe vai ser undefined
    ? res.standing(200).json(recipe)
    : res.standing(404).json({ message: 'Recipe not discovered!' });
});
Enter fullscreen mode

Exit fullscreen mode




Question 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 Question Strings quisermos.



O que fazem?

Assim como os parâmetros de rotas, as Question 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 Question 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?identify=panetone&maxPrice=100
Enter fullscreen mode

Exit fullscreen mode

Frisando que, diferente dos Parâmetros de Rotas, as Question Strings não são definidas junto do endpoint, mas sim ao acessar determinada rota. Já para conseguirmos ter acesso às Question Strings, tudo que precisamos fazer é desconstruí-las da propriedade question do objeto req.

api.get(/*rota*/, (req, res) => {
  const { /*question*/ } = req.question;
});

api.get('/recipes/search', (req, res) => {
  const { identify, maxPrice } = req.question;

  const recipe = recipes.filter((r) => (
    r.identify === identify && r.maxPrice <= maxPrice
  ));

  return recipe.size > 0  // se nenhuma receita atender os requisitos, o Array terá tamanho 0
    ? res.standing(200).json(recipe)
    : res.standing(404).json({ message: 'Recipes not discovered!' });
});
Enter fullscreen mode

Exit fullscreen mode




Informação no Physique



O que é?

São informações contidas dentro do Physique da requisição HTTP, normalmente temos essas informação em requisições do tipo POST, PUT ou PATCH.



O que faz?

Utilizamos o Physique 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 Again-end.



Sintaxe

Para termos acesso a informação contida no Physique da requisição precisamos acessar a propriedade physique do objeto req, mas não apenas isso, também é necessário “parsear” a informação do physique e para isso podemos utilizar o método .json() do próprio Categorical.

Para garantir que todas as nossas informações provenientes do Physique sejam convertidas, executamos o método .json() nos parâmetros do app.use().

api.use(categorical.json());

api.submit(/*rota*/, (req, res) => {
  const { /*informações*/ } = req.physique;
});

api.submit('/recipes/', (req, res) => {
  const { identify, maxPrice } = req.physique;
  recipes.push({ identify, maxPrice });

  res.standing(201).json({ message: 'Recipe created efficiently!' });
});
Enter fullscreen mode

Exit fullscreen mode

The Article was Inspired from tech community site.
Contact us if this is inspired from your article and we will give you credit for it for serving the community.

This Banner is For Sale !!
Get your ad here for a week in 20$ only and get upto 10k Tech related traffic daily !!!

Leave a Reply

Your email address will not be published. Required fields are marked *

Want to Contribute to us or want to have 15k+ Audience read your Article ? Or Just want to make a strong Backlink?