AJBM Posted September 17, 2016 at 11:36 AM Report #598942 Posted September 17, 2016 at 11:36 AM Boas! Eu estou a desenvolver uma api e estou com algumas dúvidas no tipo de código http que devo retornar nas respostas. Exemplo: Eu quero desativar um determinado objeto, caso seja desativado com sucesso eu retorno true com o código 200. Mas se o objeto já estiver desativo, eu retorno 400 e digo que não foi possível realizar a operação, porque o objeto já se encontra desativo. Esta abordagem está correta?
Rui Carlos Posted September 17, 2016 at 12:42 PM Report #598947 Posted September 17, 2016 at 12:42 PM O código 400 é uma opção. Diria que o código 409 também seria uma opção no caso que indicas. Tens aqui uns diagramas interessantes para ajudar a escolher o código das respostas: http://racksburg.com/choosing-an-http-status-code/ Rui Carlos Gonçalves
AJBM Posted September 17, 2016 at 01:01 PM Author Report #598948 Posted September 17, 2016 at 01:01 PM @Rui Carlos desde já obrigado pela resposta. Foi -me proposta uma alternativa a minha abordagem, que é a seguinte. Retornava 200 mas a dizia que o objeto já se encontra desativo. Eu não gosto muito desta, porque me ia obrigar a fazer mais validações do lado do cliente. e acho que iria induzir em erro, porque a operação não foi bem sucedida devido a um erro do utilizador. (Pedido inválido).
Rui Carlos Posted September 17, 2016 at 05:34 PM Report #598954 Posted September 17, 2016 at 05:34 PM Poderias assumir que a desactivação era uma operação idempotente, e nesse caso quando a operação fosse chamada a segunda vez simplesmente não fazia nada, e devolvia o código 200. Mas se precisas de devolver mais informação de modo a detectar este caso no cliente, acho que não faz sentido dizer que a operação foi bem sucedida. Rui Carlos Gonçalves
AJBM Posted September 18, 2016 at 09:27 AM Author Report #598973 Posted September 18, 2016 at 09:27 AM Ok. Outra dúvida. Uma fatura está associada a um cliente. Por algum motivo o cliente é removido da base dados.(isto nunca acontece, é só por curiosidade). O objeto que eu retorno no endpoint é mais complexo que a entidade fatura na base dados, por isso preciso de usar o id do cliente para obter algumas informações do mesmo. Caso o cliente não exista para uma dada fatura faz sentido devolver um 404, a dizer que o cliente associado a fatura não existe,ou faz mais sentido devolver a informação sem o cliente? Eu só posso devolver 404 quando o objeto (fatura) que estou à procura não existe, ou também posso usar neste caso (a fatura existe mas o cliente não)?
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now