2009-12-09 5 views
1

Je suis en train de développer un contrôleur REST CodeIgniter et j'ai besoin de POST et PUT pour une URL dans plusieurs formats.Déterminez le format de requête REST POST/PUT

Les principaux formats que je peux penser serait:

  • XML
  • JSON
  • données de formulaire HTML

Il y aura un format de réponse défini dans l'URI par exemple/format/xml ou/format/csv. Je ne veux pas non plus avoir à définir le format de la requête dans l'URI.

Je me demandais si quelqu'un avait des suggestions pour trouver le format de requête afin que mon script puisse compléter la requête.

Je pense qu'il peut être possible d'obtenir ces données à partir des en-têtes de la demande "type de contenu"?

  • "type de contenu: text/xml" = XML
  • "type de contenu: application/json" = JSON
  • "type de contenu: text/plain" = HTLM Les données du formulaire ** i think! *

Cette méthode serait-elle robuste ou existe-t-il de meilleures approches?

Merci.

+0

données de formulaire HTML: Le HTML 4.01 spec dit, il doit être soumis comme 'application/x-www-form-urlencoded': http://www.w3.org/TR/html401/interact /forms.html#h-17.13.4.1 – Boldewyn

Répondre

2

Le type de contenu est la bonne façon d'obtenir les informations que vous voulez. Assurez-vous de lancer une exception avec quelques commentaires et le code d'erreur http correct si le client l'appelle au mauvais format ou ne passe pas l'en-tête de type de contenu (vous pouvez également supposer un type de contenu par défaut)

De plus, vous n'avez pas vraiment besoin d'utiliser format/format_de_la_réponse. Un meilleur moyen serait d'utiliser l'en-tête Acceptez de la même manière que vous utilisez l'en-tête type-contenu

+0

Merci, je pense que je vais chercher dans l'utilisation de l'en-tête accepter aussi! J'espère que je peux définir les en-têtes des formes jquery, certainement plus élégant – th3hamburgler

2

Cette méthode est robuste tant que vous savez que votre client REST suivra votre règle de type de contenu. Si vous contrôlez le client, alors c'est bien. Si vous ne contrôlez pas le client, dans quelle mesure l'échec de l'appel est-il acceptable lorsqu'un type de contenu inhabituel (ou non) est transmis?

Oh, et pour référence les données de formulaire HTML a un type de contenu 'application/x-www-form-urlencoded'

+1

Merci, qui diable est venu avec cette chaîne Snappy :-) – th3hamburgler

Questions connexes