2011-04-15 1 views
2

Voici le détail:Comment écrire un serveur web pour gérer la publication (content-type est application/json) en python?

Nous voulons écrire un serveur web en Python v2.6.5, et avons terminé la méthode do_GET. Je ne sais pas comment écrire la méthode do_POST().

Si la demande de poste va comme ce qui suit:

POST /employee/111 HTTP/1.1 
Content-Type: application/json 
Content-Length: XX 

{"name": "John"} 

Comment obtenir les données JSON {"name": "John"} dans la méthode do_POST()? (préférer la bibliothèque standard)

Il serait grandement apprécié si vous pouvez éloquer pourquoi et donner un échantillon.

Merci!

Répondre

0

Dans votre message, l'élément {"name": "John"} est juste une chaîne qui doit être json analysée. Donc, d'abord importer le module json, puis faites json.load.

import json 
post_json_data = json.loads('{"name": "John"}') 

Pour détecter où les données JSON commence à vous suffit de lire jusqu'à la première {, tout de là devrait faire partie des données JSON.

2

Utilisez la classe cgi.FieldStorage pour gérer les données une forme de données avaiable du POST .. Et quand vous allez la partie qui est le corps du POST et qui, dans votre cas est au format json.

def do_POST(self): 
    # Parse the form data posted 
    form = cgi.FieldStorage(
     fp=self.rfile, 
     headers=self.headers, 
     environ={'REQUEST_METHOD':'POST', 
       'CONTENT_TYPE':self.headers['Content-Type'], 
       }) 

Voici an example illustrant comment faire

Et si le contenu est un JSON approprié, utilisez le module JSON de la bibliothèque standard pour charger au format JSON et vous pouvez traiter davantage.

>>> import json 
>>> s = '{"name": "john"}' 
>>> d = json.loads(s) 
+0

Le lien est cassé, aimerait voir la partie sur la manipulation du corps de la poste –

Questions connexes