Próbuję utworzyć prosty serwer w języku Python, aby przetestować mój frontend. Powinien być w stanie obsłużyć żądania GET i POST. Dane powinny zawsze być w formacie JSON, dopóki nie zostaną przetłumaczone na żądanie/odpowiedź HTTP. Skrypt o odpowiedniej nazwie powinien zostać wywołany, aby obsłużyć każde żądanie.Prosty serwer w języku Python do przetwarzania żądań GET i POST z 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()
Przykład testscript.py
do obsługi żądania, który w tym przypadku po prostu zwraca się obiekt JSON.
#!/usr/bin/env python
return {'4': 5, '6': 7}
Serwer powinien na przykład powrócić {'4': 5, '6': 7}
na odpowiedź w formacie http://www.domainname.com:8000/testscript.
Moim problemem jest to, że nie mogę wymyślić, jak przekazywać zmienne pomiędzy i potrzebuję pomocy, aby to działało.
Gdzie chcesz przekazać zmienne? do serwera lub między definicjami w klasach – Harwee
W tym pytaniu głównie zwracane są zmienne między skryptami python. Ale najlepiej byłoby przekazać json między Httprequest -> serwer -> skrypt obsługi -> serwer -> odpowiedź http –
Zobacz ten powiązany wpis, który zapewnia działający serwer HTTP zapewniający wsparcie POST dla Python2.7 https: // stackoverflow .pl/questions/31371166/reading-json-from-simplehttpserver-post-data – Pierz