Tipos de Parâmetros das requisições REST

Conceituando e diferenciando os tipos de parâmetros da requisição em API's REST.

Existem três tipos de parâmetros, dois deles utilizados no método GET e um no método POST.

  • Query Params
  • Route Params
  • Body Params

Query & Route Params

Query params recebe os dados da requisição como parâmetro na URL, pode conter 1 ou mais parâmetros.

Exemplo:

http://minhaapi.com/movies?name=transformes&duration=2&actor=octimusprime

Route params recebe os dados da requisição na rota, é a melhor maneira para buscar algo, deletar ou atualizar por ID, por exemplo:

GET http://minhaapi.com/movies/1 
DELETE http://minhaapi.com/movies/1 
PUT http://minhaapi.com/movies/1 

Nesse exemplo acima busca, delete e atualiza o filme com ID 1.

Ambos mudam a forma de escrever o código, veja:

/**
* três tipos de parâmetros
* Query params = ?teste=1
* Route params = /users/1
* Request Body = { "name": "Thiago" }
*/
  
// Query params = ?name=thiago
// fazer a requisição no navegador: http://localhost:3333/users/?name=Thiago
server.get("/users", (req, res) => {
  const name = req.query.name;
	return res.json({ message:  `Hello ${name}` });
});


// Route Params = /users/1
// fazer a requisição no navegador: http://localhost:3333/users/1
server.get("/users/:id", (req, res) => {
// const id = req.params.id;
const { id } = req.params; // desestruturado com ES06
	return res.json({ message:  `Buscando o usuário de ID: ${id}`});
});

Body Params

Body Params recebe os dados da requisição no corpo da requisição, em um objeto em JSON. Sempre utilizando no método POST da requisição.

POST
{
 "name": "Thiago",
 "age": 21,
 "email": "thiago@mail.com"
}

E no controller vc pega a requisição para salvar os dados no banco de dados.

server.post("/users", (req, res){
    const { name, age, email } = req.body;

    await connection("users").insert({ name, age, email });

    return res.json({ id });
 }

Objetivo foi mostrar as diferenças e também dar os devidos exemplos.

Quando surgir a dúvida de qual é qual, basta voltar aqui no post.

Resumindo:

Query Param: vc vai usar ?name=thiago&lastname=oliveira

Route Param: vc vai usar /users/1

Comentários