Em uma API do HATEOAS, são retornados links que representam possíveis transições de estado. Um cliente em conformidade deve apenas recuperar e seguir esses links, mas se um cliente não em conformidade estiver construindo URIs em vez de seguir os links fornecidos, qual seria o código / resposta de status mais apropriado a ser retornado?
- 400 funcionaria, juntamente com algumas informações no corpo da resposta - é isso que estamos fazendo atualmente
- 403 Acho que estaria errado, pois implica que a solicitação nunca poderia funcionar - mas, potencialmente, o link poderá estar disponível no futuro
- 404 parece plausível - neste momento, o recurso não existe
O que as pessoas pensam? Eu sei que solicitações condicionais podem manipular solicitações com base em respostas obsoletas (resultando em, por exemplo, 412s), mas essa é uma situação um pouco diferente.
Atualizar:
OK, agora vejo que a resposta correta para esses tipos de operações inválidas seria 404. Que tal onde a sintaxe de uma solicitação está correta, ela está indo para um recurso válido, mas de alguma forma está violando uma regra de negócios. Aqui estão alguns exemplos inventados:
- Digamos que o cliente possa fornecer dois números que devem estar dentro de 20% um do outro, mas, caso contrário, pode ser qualquer número.
- Digamos que o cliente possa fornecer um número que passa por algum cálculo cujo resultado indica que o número original fornecido estava incorreto.
400 é a resposta correta para estes?