2009-06-11 8 views
0

Je développe un service web REST-ful, et j'ai une question à propos de la méthode HTTP PUT.Organismes alternatifs pour HTTP PUT

Je souhaite autoriser les utilisateurs à soumettre du contenu à l'aide d'un corps de demande application/formulaire-données. Cependant, la réponse par défaut sera dans application/xml.

Est-ce acceptable?

Evert

Répondre

2

Les types de contenu ne sont importants que dans le cadre d'une seule requête. Tout ce qu'ils font est de décrire le format du contenu qui est envoyé.

Votre service Web doit fournir la réponse la plus acceptable à la demande du client qu'il est capable de fournir. La requête du client doit inclure un en-tête Accept qui décrit les types de contenu acceptables. Si votre service ne peut fournir aucun des types de contenu dans cet en-tête, puis retourner 406 Not Acceptable

Dans votre situation, si vos demandes client GET comprennent application/xml dans l'en-tête Accept alors il est bien de répondre avec application/xml, indépendamment de toute PUT demande faite sur les ressources demandées.

EDIT:

Le status code definition pour 406 Not Acceptable comprend une note qui suit:

Note: HTTP/1.1 serveurs sont autorisés à retourner des réponses qui ne sont pas acceptables selon les têtes d'acceptation envoyés la demande . Dans certains cas, cela peut même être préférable à l'envoi d'une réponse 406. Les agents utilisateurs sont encouragés à inspecter les en-têtes de une réponse entrante pour déterminer si elle est acceptable.

Vous pouvez donc retourner application/xml quand vous le souhaitez.

0

services RESTful devraient utiliser la méthode HTTP correcte (GET, HEAD, PUT, SUPPRIMER ou POST) pour l'action, assurez-vous que les informations de cadrage est contenue dans l'URI et assurez-vous que l'enveloppe du message HTTP ne ne contient pas d'autre enveloppe, par exemple SOAP.

Roy Fieldings 2000 Ph.D. dissertation: Architectural Styles and the Design of Network-Based Software Architectures constitue la base de REST.

+0

article intéressant, mais il ne répond pas à ma question .. Exemple: Je METS un nouvel article sur/articles/Firstpost, je reçois la possibilité d'utiliser un type de contenu soit application/xml ou application /Données de formulaire. Je choisis le plus tard. Ensuite, je fais un GET sur l'article, et je reçois la représentation de l'application/xml .. Est-ce correct? – Evert

+0

Désolé encore assez nouveau pour REST moi-même mais si je comprends bien cela dépend vraiment de la façon dont le XML sera consommé par le client. L'entité de message doit être dans un format de données qui est le plus approprié pour le client et ne nécessite pas d'analyse spécifique pour le problème, car cela couplerait le client et le service ensemble. Voici un post qui en discute un peu plus; http://www.peej.co.uk/articles/rest-data-formats.html. Quelles étaient vos raisons de penser que l'application/xml pourrait ne pas suivre les principes REST? –

Questions connexes