Мне удалось настроить python http.server и заставить работать do_POST (), но я не знаю, как вызвать функцию моей программы внутри сервера, поэтому она вызывает ее при поступлении запроса.
from http.server import HTTPServer, BaseHTTPRequestHandler
from io import BytesIO
PORT = 8080
class RequestHandler(BaseHTTPRequestHandler):
def _send_cors_headers(self):
self.send_header("Access-Control-Allow-Origin", "*")
self.send_header("Access-Control-Allow-Methods", "GET,POST,OPTIONS")
self.send_header("Access-Control-Allow-Headers",
"x-api-key,Content-Type")
def do_OPTIONS(self):
self.send_response(200)
self._send_cors_headers()
self.end_headers()
def do_POST(self):
content_length = int(self.headers['Content-Length'])
body = self.rfile.read(content_length)
self.send_response(200)
self._send_cors_headers()
self.send_header("Content-Type", "application/json")
self.end_headers()
response = BytesIO()
response.write(b'This is POST request. {test}')
response.write(b'Received: ')
response.write(body)
self.wfile.write() #I tried inputting the function in here, but it says it can only accept byte-like objects
print("Starting server")
httpd = HTTPServer(('localhost', PORT), RequestHandler)
httpd.serve_forever()
Я создал простое приложение реакции, которое принимает параметр и должно возвращать конечный результат моей программы python. Параметр это fibIndex, который возвращает число Фибоначчи по указанному индексу.