Simple Python serveur de processus et des requêtes POST avec JSON

Je suis en train de créer un simple Python serveur afin de tester mon frontend. Il doit être capable de gérer GET et POST demandes. Les données doivent être toujours au format JSON jusqu'à ce qu'ils sont traduits de requête/réponse HTTP. Un script avec un nom correspondant doit être appelé à traiter chaque demande.

server.py

#!/usr/bin/env python

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer
import SocketServer
import json
import urlparse
import subprocess

class S(BaseHTTPRequestHandler):
    def _set_headers(self):
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()

    def do_GET(self):
        self._set_headers()
        parsed_path = urlparse.urlparse(self.path)
        request_id = parsed_path.path
        response = subprocess.check_output(["python", request_id])
        self.wfile.write(json.dumps(response))

    def do_POST(self):
        self._set_headers()
        parsed_path = urlparse.urlparse(self.path)
        request_id = parsed_path.path
        response = subprocess.check_output(["python", request_id])
        self.wfile.write(json.dumps(response))

    def do_HEAD(self):
        self._set_headers()

def run(server_class=HTTPServer, handler_class=S, port=8000):
    server_address = ('', port)
    httpd = server_class(server_address, handler_class)
    print 'Starting httpd...'
    httpd.serve_forever()

if __name__ == "__main__":
    from sys import argv

    if len(argv) == 2:
        run(port=int(argv[1]))
    else:
        run()

Exemple de testscript.py pour le traitement des demandes, qui dans ce cas retourne un objet JSON.

#!/usr/bin/env python
return {'4': 5, '6': 7}

Le serveur doit par exemple le retour {'4': 5, '6': 7} pour une réponse en format http://www.domainname.com:8000/testscript.

Mon problème est que je ne peux pas comprendre comment passer des variables entre les deux, et j'ai besoin d'aide pour le faire fonctionner.

Où voulez-vous de passer des variables? pour le serveur ou entre les définitions des classes
Dans cette question principalement de retour variables entre les scripts python. Mais idéalement, je voudrais passer json entre Httprequest -> serveur -> gestionnaire de script -> serveur -> réponse http
Jetez un oeil à ce poste qui fournit un serveur HTTP en fournissant le soutien de POSTE pour Python2.7 stackoverflow.com/questions/31371166/...

OriginalL'auteur Peter Gerhat | 2015-11-12