Skip to main content

Erros de Validação:

  • Definição: Ocorrem quando os dados fornecidos em uma solicitação não atendem aos critérios de validação definidos no nível do modelo, serializador ou de outros componentes.
  • Causas Comuns:
    • Campos obrigatórios ausentes.
    • Formato de dados incorreto.
    • Valores fora dos limites permitidos.
    • Não atendem regras de negócios do Obra Play.
  • Tratamento no DRF:
    • Utilização de serializadores para validar dados.
    • Utilização de views para validar dados.
    • Uso de exceções, como ValidationError, para indicar erros de validação.
    • Retorno de respostas detalhadas sobre os erros, geralmente com códigos HTTP 400 Bad Request.

Solicitações Inválidas (Bad Requests):

  • Definição: Representam solicitações que não podem ser processadas devido a problemas na estrutura ou conteúdo da requisição.
  • Causas Comuns:
    • Sintaxe inválida na solicitação.
    • Formato de dados inesperado.
    • Parâmetros ausentes ou incorretos.
  • Tratamento no DRF:
    • O DRF utiliza códigos de status HTTP 400 Bad Request para indicar solicitações inválidas.
    • Mensagens de erro detalhadas são retornadas para auxiliar os desenvolvedores na identificação e correção dos problemas.
    • A estrutura consistente de respostas facilita a compreensão dos erros.

Exemplo de Resposta de Erro no DRF caso seja erro de serializer:

Ao ocorrer um erro, o DRF fornece uma resposta JSON detalhada, incluindo mensagens de erro específicas para cada campo e uma indicação do problema geral caso não esteja relacionada a campos de um modelo mas uma validação específica.

  • Erro ao enviar email não válido como matheus@.com:
{
"email": [
"Insira um endereço de email válido."
]
}
  • Erro ao enviar ID de uma empresa que não existe como -234 ou 99999999999999999999999:
{
"company": [
"Pk inválido \"58686828258258828\" - objeto não existe."
]
}
  • Erro ao enviar ID de uma empresa que não existe como 256 e juntamente enviar uma lista vazia de endereços de entrega:
{
"company": [
"Pk inválido \"256\" - objeto não existe."
],
"quotation": {
"shipping_addresses": {
"non_field_errors": [
"Esta lista não pode estar vazia."
]
}
}
}
  • Erro ao enviar ID de uma empresa que não existe como 256 e juntamente não enviar endereços de entrega:
{
"company": [
"Pk inválido \"256\" - objeto não existe."
],
"quotation": {
"shipping_addresses": [
"Este campo é obrigatório."
]
}
}

Exemplo de Resposta de Erro no DRF caso seja erro de view:

Ao ocorrer um erro, o Obra Play fornece uma resposta JSON detalhada, incluindo mensagens de erro e uma indicação do problema geral o qual majoritariamente é de uma regra de negócio.

  • Erro ao tentar cancelar uma cotação já cancelada (não pode cancelar 2 vezes é uma regra de negócio):
{
"detail": "Quotation already canceled"
}
  • Erro ao finalizar uma resposta de cotação passando um item respondido que não está vinculao a resposta em questão (Não pode responder items que não são da cotação é uma regra de negócio)
{
"detail": "Answered item 14745 not present in quotation answer"
}
  • Erro ao tentar filtrar dados além de 6 meses no mapa de preço região (O tempo máximo é 6 meses é um regra de negócio)
{
"detail": "Time range filter out of range of 6 months."
}

Cabeçalho Accept-Language no Django Rest Framework (DRF):

O cabeçalho Accept-Language desempenha um papel crucial no suporte a internacionalização e localização em aplicações web, incluindo aquelas desenvolvidas com o Django Rest Framework (DRF). Este cabeçalho permite que os clientes indiquem suas preferências de idioma para receber respostas adaptadas à linguagem desejada.

Ao utilizar o DRF, a manipulação do cabeçalho Accept-Language é automaticamente integrada para facilitar a internacionalização. Aqui estão alguns pontos-chave:

  • Negociação de Idioma:

    • O DRF realiza a negociação de idioma com base no cabeçalho Accept-Language enviado pelo cliente na solicitação.
    • Ele seleciona automaticamente a melhor tradução disponível para os recursos e responde no idioma preferido pelo cliente, se disponível.
  • Prioridade de Idiomas:

    • O cabeçalho Accept-Language pode conter uma lista de idiomas ordenados por prioridade.
    • O DRF tentará corresponder ao idioma mais preferido pelo cliente, mas, se não estiver disponível, ele tentará encontrar uma tradução em idiomas menos preferidos.

O suporte integrado ao cabeçalho Accept-Language no DRF facilita a construção de APIs multilíngues, proporcionando uma experiência mais personalizada aos usuários com base em suas preferências de idioma.

Esses links direcionam para a documentação oficial do Django Rest Framework, onde você pode encontrar informações detalhadas sobre a validação de serializadores, validação de campos e o tratamento de erros e exceções no DRF.