Question

Mon API REST renvoie JSON.

Je retourne actuellement text / plain en tant que type MIME, mais c'est drôle. Dois-je renvoyer application / x-javascript ou un autre type?

La deuxième question concerne le code de statut HTTP pour les conditions d'erreur. Si mon API REST renvoie un état d'erreur, je retourne au format JSON

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

Le code d'état HTTP doit-il rester à 200 OK ?

Était-ce utile?

La solution

La spécification JSON suggère application / json , et cela semble être soutenu par les IETF et Registre IANA .

En ce qui concerne la deuxième question, je pense que si le traitement du message échoue, vous devez renvoyer une réponse d'erreur structurée et standard sous forme de message JSON. si, pour une raison quelconque, le message n’est pas remis au gestionnaire dorsal, vous devez envisager un code d’erreur HTTP.

Mise à jour 2014-06-27 : le temps où les clients (navigateurs) travaillaient avec une réponse 200 est révolu et le conseil qui prévaut pour les API RESTful consiste à utiliser des codes de réponse HTTP appropriés pour la réponse. , 2xx pour les réponses correctes (par exemple, 201 Created for PUT; 204 No Content for DELETE) et 4xx et 5xx pour toutes les conditions d'erreur, y compris celles de l'API.

Autres conseils

Je préfère répondre avec un statut d'erreur HTTP et une charge utile spécifique à l'application.

Non, vous ne devriez pas renvoyer 200 en cas d'erreur.

Il est correct de répéter le code d'état ou d'inclure un code d'erreur plus détaillé dans la charge de la réponse.

Le type de contenu à renvoyer est application / json , selon RFC 4627 , qui enregistre également le type IANA de type MIME (et effectivement, il apparaît sur la page de l'IANA). Bien sûr, si vous deviez écrire un client, vous voudriez être plus libéral dans ce que vous acceptez, mais aussi accepter d'autres tels que text / json et text / x-json .

Maintenant, s'il y a une erreur, pas vous devez renvoyer HTTP 200, ce qui est fondamentalement non RESTful. Je sais que, parfois, votre erreur ne correspond pas exactement, mais choisissez les erreurs 4XX (du client) ou 5XX (du serveur) les plus proches dans Sections RFC 2616 10.4 -10.5, et soyez plus précis dans le code JSON.

Si par " API REST " vous voulez dire que vous voulez suivre une architecture REST, le type de média à utiliser est déterminé par la fonctionnalité que vous souhaitez exposer via l'API REST. Voulez-vous pouvoir créer de nouveaux objets? Interroger une liste d'objets? Modifier un objet? Si tel est le cas, vnd.collection + json peut être utilisé comme type de média RESTful, car il définit une interface liée à un lien hypertexte permettant de manipuler une collection d’objets json.

Remarque: une API RESTful peut utiliser le type de média application / json, mais ce type de média ne possède pas d'interface RESTful liée à un lien hypertexte. Il s'agirait donc d'un point final du changement d'état.

Il est également tout à fait acceptable de suivre une architecture API Web, où les appels HTTP RPC renvoient des objets application / json, et les autres appels HTTP RPC manipulent ces objets, et il n’existe aucune interface de lien hypertexte permettant d’utiliser et de parcourir les changements d’état. Mais ce n’est pas le reste.

J'aime cette description de REST (du créateur de REST):

L'APIS REST doit être piloté par hypertexte

  

En d'autres termes, si le moteur de l'état de l'application (et donc de l'API)   n'est pas entraîné par l'hypertexte, il ne peut pas être RESTful ni ne peut   être une API REST. Période.

En outre, cet exemple d’application REST est le suivant: Lost Application REST Spam-E pour garçons

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top