2009-10-28 3 views
0

Lorsque j'envoie une représentation JSON de mon entité au serveur, comment doit être livré la charge utile? Pour autant que je vois, il y a deux options:Représentation json pour REST. Fichier ou données de formulaire POST?

  1. en tant que fichier uploadé
  2. que le contenu d'une des données de formulaire POST

Le premier cas ne peut pas être réalisée par requête AJAX, dans la mesure comme je vois, mais il semble que le "bon". Savez-vous s'il existe un moyen «de facto» de réaliser cette tâche?

Répondre

0

Vous pouvez utiliser la méthode POST pour envoyer toutes les données que vous voulez, ce qui signifie, vous pouvez le charger (le corps de la demande) avec JSON ainsi et il est tout à fait correct. Assurez-vous que votre application serveur est capable de décoder - pour cela, vous pouvez fournir votre demande avec un en-tête Content-Type correct (« application/json » ou quel que soit le type de support à droite), de sorte que le côté serveur sait comment désérialiser le charge utile.

0

Vous devriez avoir aucun problème affichant une entité JSON directement à partir de Javascript. Voir here pour des exemples sur la façon de le faire avec jQuery.

Je ne vois aucun avantage à utiliser un formulaire pour publier les données.

+0

Ce que je veux dire est que Ajax.post accepte les données sous forme de paires clé/valeur (sérialisé ou non). Cela signifie que ces données apparaîtront dans request.POST dans django, par exemple, pas dans request.FILES. Afin de mettre en place un téléchargement de fichier, c'est un problème beaucoup plus complexe. –

+0

C'est bizarre à quelle fréquence les frameworks semblent rendre plus difficile le travail avec HTTP que l'accès direct. –

0

Pour envoyer des données brutes comme une demande de paiement ajax avec jQuery, utilisez $.ajax() avec processData=false et contentType ensemble à ce que vous voulez (application/json dans ce cas.)

Réglage processData=false empêchera jQuery de convertir data en forme post.