Quando desenvolvemos APIs RESTful, uma das primeiras decisões que precisamos tomar é como estruturar nossas URLs para que sejam intuitivas, eficientes e sigam as melhores práticas. Dois conceitos fundamentais nessa estruturação são os Path Parameters e os Query Parameters. Embora pareçam semelhantes à primeira vista, eles têm propósitos distintos e saber quando usar cada um pode significar a diferença entre uma API bem projetada e uma confusa.

Entendendo os conceitos

Path Parameters

Path Parameters (ou parâmetros de caminho) são variáveis embutidas na própria rota da URL. Eles são usados para identificar um recurso específico ou uma entidade.

// Exemplo de rota com Path Parameter
app.get('/users/:userId', (req, res) => {
  const userId = req.params.userId;
  // Buscar usuário com o ID específico
  res.send(`Buscando detalhes do usuário ${userId}`);
});

Uma requisição para esta rota se pareceria com: GET /users/123

Path Parameters Diagrama

Query Parameters

Query Parameters (ou parâmetros de consulta) aparecem após o sinal de interrogação (?) na URL e são formatados como pares de chave-valor separados por &. Eles são usados principalmente para filtrar, ordenar ou paginar os dados.

// Exemplo de rota com Query Parameters
app.get('/products', (req, res) => {
  const { category, sortBy, page } = req.query;
  // Buscar produtos com os filtros especificados
  res.send(`Buscando produtos da categoria ${category}, ordenados por ${sortBy}, página ${page}`);
});

Uma requisição para esta rota se pareceria com: GET /products?category=electronics&sortBy=price&page=2

Query Parameters Diagrama

Quando usar cada um?

A escolha entre Path e Query Parameters depende principalmente do propósito da sua requisição. Aqui está uma tabela comparativa para ajudar na decisão:

Característica Path Parameters Query Parameters
Propósito Identificar um recurso específico Filtrar, ordenar ou paginar dados
Obrigatoriedade Geralmente obrigatórios Geralmente opcionais
Suporte ao cache Melhor para cache Pode complicar o cache
SEO Mais amigável para SEO Menos impacto no SEO
Legibilidade Mais limpo para identificadores Melhor para múltiplos parâmetros

Melhores práticas

Use Path Parameters quando:

  1. Identificando recursos específicos: Para acessar uma entidade única por seu identificador
/users/123
   /products/456
   /articles/como-usar-typescript
  1. Seguindo hierarquias de recursos: Para representar relações de pertencimento
/users/123/orders/789
   /departments/rh/employees/456
  1. Para valores obrigatórios: Se o parâmetro é essencial para a requisição funcionar

Use Query Parameters quando:

  1. Filtrando coleções: Para refinar resultados de uma lista
/products?category=electronics&minPrice=100&maxPrice=500
  1. Paginação e ordenação: Para controlar como os dados são apresentados
/articles?page=2&perPage=10&sortBy=date
  1. Parâmetros opcionais: Quando a requisição funciona mesmo sem estes parâmetros
/search?q=typescript&advanced=true

Considerações técnicas

Aspectos de segurança

É importante lembrar que Path Parameters ficam mais expostos nos logs de servidores, enquanto Query Parameters podem ser mais facilmente ocultados. Se você estiver lidando com dados sensíveis, considere essa diferença.

Compatibilidade com frameworks

A maioria dos frameworks modernos (Express, NestJS, FastAPI, etc.) oferece suporte robusto tanto para Path quanto para Query Parameters. No entanto, a sintaxe pode variar:

No Express e NestJS (ambiente Node.js):

  • Path Parameters: /users/:id
  • Query Parameters: acessados via req.query

No ASP.NET Core:

  • Path Parameters: /users/{id}
  • Query Parameters: injetados via parâmetros do método

Conclusão

Não existe uma regra absoluta sobre quando usar Path ou Query Parameters. O mais importante é manter a consistência em toda a sua API e seguir as convenções REST.

Uma abordagem geralmente aceita é:

  • Use Path Parameters para identificar recursos específicos
  • Use Query Parameters para tudo relacionado à filtragem, paginação e ordenação

Seguindo essas diretrizes, você criará APIs mais intuitivas e fáceis de consumir, tanto para desenvolvedores quanto para sistemas automatizados.

E você, tem alguma preferência entre Path e Query Parameters? Compartilhe nos comentários!


Este post foi escrito por Johan Henrique, desenvolvedor fullstack e Head da SparkWebStudios. Visite meu portfólio para mais conteúdos sobre desenvolvimento web.