Jump to content
AJBM

Dúvida RESTFul API

Recommended Posts

AJBM

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?

Share this post


Link to post
Share on other sites
AJBM

@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).

Share this post


Link to post
Share on other sites
Rui Carlos

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. 

Share this post


Link to post
Share on other sites
AJBM

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)?

Share this post


Link to post
Share on other sites

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 account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.