Pergunta

Meu API REST retorna JSON.

Atualmente estou voltando text / plain como o tipo MIME, mas parece engraçado. Devo voltar application/x-javascript ou algum outro tipo?

A segunda pergunta é em relação ao código de status HTTP para condições de erro. Se o meu API REST está retornando um estado de erro, estou voltando como JSON

{ result: "fail", errorcode: 1024, errormesg: "That sucked. Try again!" }

Caso o código de status HTTP permanecer em 200 OK?

Foi útil?

Solução

O JSON especificação sugere application/json, e que parece ser suportado pelo IETF e registro IANA .

Quanto à segunda questão, acho que se a manipulação mensagem de falha de alguma forma você deve retornar uma resposta de erro estruturado e padrão como uma mensagem JSON; somente se houver uma falha para entregar a mensagem para o manipulador de backend, por algum motivo você deve considerar um código de erro HTTP.

Atualização 2014/06/27 : Os dias em que os clientes (navegadores) só trabalhou com uma resposta 200 são longos passado e os conselhos prevalecente para RESTful APIs é usar HTTP códigos de resposta adequados para a resposta , 2xx respostas bem-sucedidas (por exemplo, 201 Criado por PUT; 204 Nenhum conteúdo para Delete). e 4xx e 5xx para todas as condições de erro, incluindo aqueles da própria API

Outras dicas

Eu prefiro responder com tanto uma carga status de erro HTTP e específico do aplicativo.

Não, você não deve retornar 200 em uma condição de erro.

É ok para repetir o código de status, ou para incluir um código de erro mais detalhada na carga útil de resposta.

O Content-type correta de retorno é application/json, de acordo com RFC 4627 , que também registra o MIME digite IANA (e, na verdade, ele aparece na página da IANA). Claro, se você fosse escrever um cliente, você gostaria de ser mais liberal no que você aceitar, e também aceitar outros, como text/json e text/x-json.

Agora, se houver um erro você deve não HTTP retorno 200, que é fundamentalmente não-RESTful. Sei que às vezes não há uma correspondência exata para o seu erro, mas escolher os erros mais próximos 4XX (culpa do cliente) ou 5XX (culpa do servidor) em RFC 2616 Secções 10.4 -10.5, e ser mais preciso no JSON.

Se por "API REST" Quer dizer que você quer seguir uma arquitetura RESTO em seguida, o tipo de mídia para uso é determinado pela funcionalidade que você deseja expor através da API REST. Você quer ser capaz de criar novos objetos? Consultar uma lista de objetos? Editar um objeto? Se sim, então uma boa tipo de mídia RESTful para uso pode ser vnd.collection + json porque define uma interface de hipertexto ligado para manipular uma coleção de objetos JSON.

Nota: A RESTful API poderia usar o tipo de mídia aplicação / json, mas este tipo de mídia não tem um hipertexto ligado interface RESTful, por isso seria um ponto final na mudança de estado.

Também é completamente aceitável para seguir uma arquitetura web API, onde HTTP RPC chama aplicação de retorno / objetos JSON, e outras chamadas RPC HTTP manipular esses objetos, e não há nenhuma interface de link de hipertexto para usar e navegar as mudanças de estado. Mas este não é o descanso.

Eu como esta descrição de repouso (do criador do REST):

APIs REST deve ser hipertexto impulsionado

Em outras palavras, se o motor do estado do aplicativo (e, portanto, a API) não está sendo impulsionada por hipertexto, então ele não pode ser RESTful e não pode ser uma API REST. Período.

Além disso, a partir da discussão desse post é este exemplo de uma aplicação RESTful: Perdido Spam-E RESTO Aplicação dos meninos

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top