Estou testando meu endpoint de API C# e encontrando uma discrepância entre o código de status que retorno no meu controlador e o que recebo usando fetch. Configurei meu controlador C# para retornar 400 Bad Request se um valor de parâmetro não corresponder ao formato esperado. No entanto, quando faço uma solicitação com parâmetros inválidos usando fetch, response.status mostra 422 Unprocessable Entity em vez de 400.
Aqui está o código relevante: Na minha API C#, estou verificando se o parâmetro category é válido. Se não for, eu configuro uma resposta ProblemDetails com um código de status 400. Quando eu preencho um parâmetro false, ele retorna o 400.
if (!string.IsNullOrEmpty(category) && category != "http://terminology.hl7.org/CodeSystem/observation-category|laboratory")
{
return UnprocessableEntity(new ProblemDetails
{
Title = "Ongeldige parameter",
Detail = "De enige toegestane waarde voor 'category' is 'http://terminology.hl7.org/CodeSystem/observation-category|laboratory'.",
Status = 400
});
}
Durante o teste, estou usando fetch-api para fazer as solicitações. Este trecho de código mostra como estou enviando a solicitação e registrando o status da resposta.
async def make_request(params):
response = await fetch('/api/request', {
method: 'POST',
headers: {
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: document.getElementById('url').value,
params: params
})
})
data = await response.json()
print(response.status) # This shows 422 instead of 400
return {
'status': response.status,
'data': data
}
Por que o response.status em JavaScript mostra 422 em vez de 400? Isso é um problema com a forma como UnprocessableEntity funciona em C# ao definir um código de status personalizado ou pode ser algo específico da implementação fetch em JS?