Apidog

All-in-one Collaborative API Development Platform

Design de API

Documentação de API

Depuração de API

Mock de API

Testes Automatizados de API

Inscreva-se gratuitamente
Home / Tudo o que Você Precisa Saber sobre Parâmetros de Consulta do FastAPI (com Melhores Práticas)

Tudo o que Você Precisa Saber sobre Parâmetros de Consulta do FastAPI (com Melhores Práticas)

FastAPI é um framework web moderno e de alto desempenho para construção de APIs com Python. Uma de suas características mais notáveis é o manejo de parâmetros de consulta do FastAPI, que permite aos desenvolvedores criar APIs flexíveis e amigáveis ao usuário. Neste artigo, exploraremos as melhores práticas e técnicas para usar os parâmetros de consulta do FastAPI de forma eficaz em 2024.

Imagem do Logo do FastAPI Png

Por que Usar Parâmetros de Consulta do FastAPI?

  1. Flexibilidade: Os parâmetros de consulta do FastAPI permitem que os clientes personalizem os resultados de suas requisições. Por exemplo, os usuários podem filtrar os resultados da pesquisa com base em critérios específicos, como categoria, preço ou classificação.
  2. Usabilidade: Eles simplificam a interação entre os clientes e a API. Os clientes podem facilmente adicionar parâmetros de consulta à URL, enquanto os desenvolvedores podem validar e processar rapidamente esses parâmetros em seu código.
  3. Performance: Ao usar os parâmetros de consulta do FastAPI, você pode reduzir o número de endpoints necessários para uma API. Em vez de criar endpoints separados para cada opção de filtragem, um único endpoint pode lidar com múltiplos parâmetros de consulta.

Como Usar Parâmetros de Consulta do FastAPI

Definindo Parâmetros de Consulta do FastAPI

Para definir parâmetros de consulta no FastAPI, você simplesmente os inclui como parâmetros de função na definição do seu endpoint. Aqui está um exemplo básico:

from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(
    q: str | None = Query(default=None, max_length=50),
    skip: int = Query(default=0, ge=0),
    limit: int = Query(default=10, le=100)
):
    return {"q": q, "skip": skip, "limit": limit}

Neste exemplo:

  • q: Um parâmetro de string opcional com um comprimento máximo de 50 caracteres.
  • skip: Um parâmetro inteiro que especifica quantos itens pular, com um valor padrão de 0 e um valor mínimo de 0.
  • limit: Um parâmetro inteiro que especifica o número máximo de itens a serem retornados, com um valor padrão de 10 e um valor máximo de 100.

Acessando Parâmetros de Consulta do FastAPI

Quando um cliente faz uma requisição para o endpoint, o FastAPI extrai automaticamente os parâmetros de consulta da URL e os passa para a função. Por exemplo, se uma requisição é feita para /items/?q=foo&skip=10&limit=5, a função receberá:

  • q = "foo"
  • skip = 10
  • limit = 5

Essa extração automática facilita o trabalho com parâmetros de consulta do FastAPI sem necessidade de lógica adicional de parsing.

Parâmetros de Consulta Opcionais e Obrigatórios do FastAPI

Por padrão, os parâmetros de consulta do FastAPI são opcionais. Se um parâmetro não for fornecido na requisição, o FastAPI usará o valor padrão especificado. Para torná-lo obrigatório, basta omitir o valor padrão:

@app.get("/items/")
async def read_items(required_param: str):
    return {"required_param": required_param}

Se o required_param não estiver incluído na requisição, o FastAPI retornará um erro 422 Unprocessable Entity, indicando que um parâmetro de consulta obrigatório está faltando.

Tratando Múltiplos Valores para Parâmetros de Consulta do FastAPI

O FastAPI permite que você defina um parâmetro de consulta que pode aceitar múltiplos valores. Você pode fazer isso especificando o tipo do parâmetro como uma lista:

from typing import List

@app.get("/items/")
async def read_items(q: List[str] = Query(default=[])):
    return {"q": q}

Neste caso, o cliente pode fazer uma requisição como /items/?q=foo&q=bar&q=baz, e o FastAPI irá parsear os valores em uma lista. Este recurso é particularmente útil para cenários onde os usuários desejam filtrar resultados com base em múltiplos critérios.

💡
Procurando elevar seu desenvolvimento de API? Experimente o Apidog. Esta ferramenta poderosa é perfeita para aprimorar seus projetos FastAPI e muito mais. Experimente gratuitamente e veja como pode agilizar seu fluxo de trabalho e aumentar a eficiência
button

Validando Parâmetros de Consulta do FastAPI

O FastAPI fornece validação incorporada para parâmetros de consulta usando a função Query. Você pode especificar restrições como valores mínimos e máximos, restrições de comprimento e padrões regex. Aqui está um exemplo:

@app.get("/items/")
async def read_items(
    q: str = Query(default=None, min_length=3, max_length=50),
    item_id: int = Query(ge=1, le=100)
):
    return {"q": q, "item_id": item_id}

Neste exemplo, q deve ser uma string com comprimento mínimo de 3 e máximo de 50. O item_id deve ser um inteiro entre 1 e 100. O FastAPI irá validar automaticamente essas restrições e retornar um erro se a entrada não atender aos critérios especificados.

Geração Automática de Documentação com FastAPI e OpenAPI

Uma das vantagens notáveis de usar FastAPI é sua integração perfeita com OpenAPI, que permite a geração automática de documentação interativa da API. Esse recurso melhora a usabilidade de sua API e proporciona uma melhor experiência para os desenvolvedores que a consomem. Aqui está um olhar mais atento sobre como o FastAPI alcança isso e como você pode melhorar a documentação para seus parâmetros de consulta.

O que é OpenAPI?

OpenAPI é uma especificação para construção de APIs que fornece uma maneira padrão de descrever as capacidades de sua API. Ela permite que tanto humanos quanto máquinas entendam as capacidades de um serviço sem acessar seu código-fonte ou ver mais documentação. O FastAPI aproveita essa especificação para gerar automaticamente a documentação interativa para os seus endpoints de API.

Como o FastAPI Gera Documentação

Quando você define sua aplicação FastAPI e seus endpoints, o FastAPI cria automaticamente um esquema OpenAPI com base nas assinaturas das funções e nos tipos dos parâmetros que você define. Esse esquema inclui:

  • Caminhos dos Endpoints: As rotas que você define na sua aplicação.
  • Métodos HTTP: Os métodos (GET, POST, PUT, DELETE, etc.) associados a cada endpoint.
  • Parâmetros: Tanto parâmetros de caminho quanto de consulta, incluindo seus tipos, valores padrão e restrições.
  • Modelos de Resposta: O formato de resposta esperado para cada endpoint.

Como Fazer Documentação Interativa com FastAPI

O FastAPI fornece duas interfaces de documentação interativa por padrão:

  1. Swagger UI: Acessível em /docs, essa interface permite que os usuários explorem os endpoints da sua API, visualizem os formatos de requisição e resposta e até testem os endpoints diretamente do navegador.
  2. ReDoc: Disponível em /redoc, essa interface fornece uma visão mais detalhada e estruturada da documentação da sua API, facilitando a navegação e compreensão dos vários endpoints e seus parâmetros.

Ambas as interfaces são geradas automaticamente com base no esquema OpenAPI criado pelo FastAPI, garantindo que sua documentação esteja sempre atualizada com seu código.

Aprimorando a Documentação para Parâmetros de Consulta

Embora o FastAPI gere documentação básica para seus parâmetros de consulta, você pode aprimorá-la ainda mais fornecendo descrições detalhadas, exemplos e metadados adicionais. Veja como:

  1. Texto Descritivo: Use o parâmetro description na função Query para fornecer explicações claras sobre o que cada parâmetro de consulta faz. Isso é particularmente útil para usuários que podem não estar familiarizados com sua API.
from fastapi import FastAPI, Query

app = FastAPI()

@app.get("/items/")
async def read_items(
    q: str | None = Query(default=None, description="Termo de pesquisa para filtrar itens."),
    skip: int = Query(default=0, ge=0, description="Número de itens a serem pulados."),
    limit: int = Query(default=10, le=100, description="Número máximo de itens a serem retornados.")
):
    return {"q": q, "skip": skip, "limit": limit}

2. Exemplos: Forneça exemplos para seus parâmetros de consulta para ilustrar como eles podem ser usados. Isso é particularmente útil para parâmetros complexos ou quando existem formatos específicos que precisam ser seguidos.

@app.get("/items/")
async def read_items(
    q: str | None = Query(default=None, description="Termo de pesquisa para filtrar itens.", example="maçã"),
    skip: int = Query(default=0, ge=0, description="Número de itens a serem pulados.", example=5),
    limit: int = Query(default=10, le=100, description="Número máximo de itens a serem retornados.", example=20)
):
    return {"q": q, "skip": skip, "limit": limit}

3. Restrições de Validação: Declare claramente quaisquer restrições de validação para seus parâmetros de consulta. Isso inclui valores mínimos e máximos, restrições de comprimento e quaisquer formatos específicos. O FastAPI lida com essas validações automaticamente, mas documentá-las ajuda os usuários a entender os limites.

4. Anotações de Tipo: Use anotações de tipo apropriadas para seus parâmetros de consulta. O FastAPI usa essas anotações para gerar automaticamente os tipos de dados esperados na documentação, o que ajuda os usuários a entender que tipo de dados eles devem fornecer.

5. Agrupando Parâmetros Relacionados: Se sua API possui vários parâmetros de consulta relacionados, considere agrupá-los logicamente. Isso pode ajudar os usuários a entender como os parâmetros interagem entre si e quais combinações são válidas.

Benefícios da Documentação Aprimorada

  1. Usabilidade Aprimorada: Parâmetros de consulta bem documentados facilitam a compreensão para os desenvolvedores sobre como interagir com sua API. Isso reduz a curva de aprendizado e aumenta a adoção.
  2. Redução de Solicitações de Suporte: Documentação clara pode ajudar a responder perguntas comuns e reduzir o número de solicitações de suporte que você recebe de usuários tentando entender como usar sua API.
  3. Desenvolvimento Mais Rápido: Desenvolvedores podem rapidamente consultar a documentação durante a construção de aplicações, resultando em ciclos de integração e desenvolvimento mais rápidos.
  4. Aumento da Adoção da API: Documentação abrangente e amigável pode atrair mais desenvolvedores para usar sua API, aumentando seu sucesso e alcance geral.
  5. Consistência: A documentação automática garante que a documentação da sua API seja consistente com a implementação real, reduzindo discrepâncias que podem causar confusão.

Técnicas Avançadas para Parâmetros de Consulta do FastAPI

Usando Enums para Parâmetros de Consulta do FastAPI

Você pode restringir os parâmetros de consulta do FastAPI a um conjunto pré-definido de valores usando Enums do Python. Isso é útil para parâmetros que devem aceitar apenas opções específicas:

from enum import Enum

class ItemType(str, Enum):
    fruta = "fruta"
    vegetal = "vegetal"
    laticinio = "laticinio"

@app.get("/items/")
async def read_items(item_type: ItemType):
    return {"item_type": item_type}

Neste exemplo, o parâmetro de consulta item_type pode ser apenas um dos valores definidos no Enum ItemType. Se o cliente fornecer um valor inválido, o FastAPI retornará um erro 422.

Dependências de Parâmetros de Consulta

O FastAPI permite que você crie dependências para parâmetros de consulta, o que pode ajudar a reutilizar lógica em múltiplos endpoints. Você pode definir uma função de dependência que retorna um valor com base nos parâmetros de consulta:

from fastapi import Depends

def query_param_dependency(q: str | None = None):
    return q if q else "padrão"

@app.get("/items/")
async def read_items(q: str = Depends(query_param_dependency)):
    return {"q": q}

Neste exemplo, a função query_param_dependency verifica se o parâmetro de consulta q foi fornecido. Se não, retorna um valor padrão. Essa abordagem promove a reutilização de código e mantém suas funções de endpoint limpas.

Tratamento de Erros para Parâmetros de Consulta do FastAPI

O FastAPI lida automaticamente com erros relacionados a parâmetros de consulta. Se um parâmetro de consulta obrigatório estiver faltando ou se um parâmetro falhar na validação, o FastAPI retornará uma resposta 422 Unprocessable Entity com uma mensagem de erro detalhada. Você pode personalizar o tratamento de erros usando manipuladores de exceções:

from fastapi import HTTPException

@app.get("/items/")
async def read_items(q: str | None = Query(default=None)):
    if q is None:
        raise HTTPException(status_code=400, detail="O parâmetro de consulta 'q' é obrigatório.")
    return {"q": q}

Este exemplo demonstra como lançar uma exceção HTTP personalizada quando um parâmetro de consulta obrigatório não é fornecido. Essa abordagem permite que você forneça mensagens de erro mais informativas aos clientes.

Testando Parâmetros de Consulta do FastAPI

Testar sua aplicação FastAPI é crucial para garantir que seus parâmetros de consulta funcionem como esperado. Você pode usar a biblioteca httpx para realizar testes em seus endpoints FastAPI. Aqui está um exemplo:

import httpx
import pytest

@pytest.mark.asyncio
async def test_read_items():
    async with httpx.AsyncClient() as client:
        response = await client.get("http://localhost:8000/items/?q=test&skip=0&limit=10")
        assert response.status_code == 200
        assert response.json() == {"q": "test", "skip": 0, "limit": 10}

Neste teste, fazemos uma requisição GET para o endpoint /items/ com parâmetros de consulta e afirmamos que a resposta é a esperada. Testar é uma parte essencial do processo de desenvolvimento, garantindo que sua API se comporte corretamente ao lidar com parâmetros de consulta do FastAPI.

Conclusão

Os parâmetros de consulta do FastAPI são um recurso poderoso que permite que você passe dados adicionais para os endpoints da sua API através da URL. Eles proporcionam flexibilidade, usabilidade e benefícios de performance na construção de APIs com o FastAPI. Neste guia, exploramos como definir, acessar, validar e documentar os parâmetros de consulta do FastAPI usando exemplos detalhados. Abordamos tópicos como parâmetros opcionais e obrigatórios, múltiplos valores, tipos complexos e geração automática de documentação. Também discutimos técnicas avançadas, tratamento de erros, testes e armadilhas comuns. Ao aproveitar os parâmetros de consulta do FastAPI, você pode criar APIs mais flexíveis e amigáveis ao usuário que podem lidar com vários requisitos de filtragem, ordenação e paginação sem a necessidade de múltiplos endpoints dedicados. Lembre-se de escolher tipos de parâmetros, validações e descrições apropriadas para garantir que sua API seja fácil de usar e bem documentada para seus clientes. As poderosas capacidades de parâmetros de consulta do FastAPI podem melhorar significativamente a funcionalidade e usabilidade da sua API, tornando-a uma excelente escolha para aplicações web modernas.

Recursos Adicionais sobre FastAPI

Para aprimorar ainda mais sua compreensão sobre os parâmetros de consulta do FastAPI, considere explorar os seguintes recursos:

  1. Documentação do FastAPI: A documentação oficial do FastAPI fornece informações abrangentes sobre parâmetros de consulta e outros recursos.
  2. Repositório GitHub do FastAPI: Confira o repositório GitHub do FastAPI para código-fonte, exemplos e contribuições da comunidade.
  3. Tutoriais do FastAPI: Procure por tutoriais e cursos online que se concentrem no FastAPI para aprofundar seu conhecimento e habilidades.

Seguindo estas melhores práticas e técnicas para parâmetros de consulta do FastAPI, você pode construir APIs robustas e eficientes que atendam às necessidades de seus usuários em 2024 e além.

button

Junte-se à Newsletter da Apidog

Inscreva-se para ficar atualizado e receber os últimos pontos de vista a qualquer momento.