Sto provando a creare un semplice server Python per testare il mio frontend. Dovrebbe essere in grado di gestire le richieste GET e POST. I dati devono essere sempre in formato JSON fino a quando non vengono tradotti in richiesta/risposta HTTP. Dovrebbe essere chiamato uno script con il nome corrispondente per gestire ogni richiesta.Semplice server Python per elaborare richieste GET e POST con JSON
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()
Esempio di testscript.py
per la gestione delle richieste, che in questo caso solo restituisce un oggetto JSON.
#!/usr/bin/env python
return {'4': 5, '6': 7}
Il server deve ritornare ad esempio {'4': 5, '6': 7}
per una risposta in formato http://www.domainname.com:8000/testscript.
Il mio problema è che non riesco a capire come passare le variabili in mezzo e ho bisogno di aiuto per farlo funzionare.
Dove vuoi passare le variabili? al server o tra le definizioni nelle classi – Harwee
In questa domanda restituiscono principalmente le variabili tra gli script Python. Ma idealmente mi piacerebbe passare JSON tra Httprequest -> server -> script di gestione -> server -> risposta http –
Dai un'occhiata a questo post correlato che fornisce un server HTTP funzionante che fornisce supporto POST per Python2.7 https: // StackOverflow .com/questions/31371166/reading-json-from-simplehttpserver-post-data – Pierz