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
ou99999999999999999999999
:
{
"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.
- O DRF realiza a negociação de idioma com base no cabeçalho
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 cabeçalho
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.
Links Externos sobre Validação no Django Rest Framework (DRF):
- Documentação Oficial do DRF:
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.