У меня есть следующий веб-сервер, с которым я бы хотел обрабатывать POST-запросы. Если возникает ошибка, я хотел бы отправить ошибку обратно на сервер, который сделал запрос POST, чтобы отобразить его для пользователя. Я также хотел бы напечатать ошибку в выводе веб-сервера.
from http.server import HTTPServer, BaseHTTPRequestHandler
class SimpleHTTPRequestHandler(BaseHTTPRequestHandler):
def do_POST(self):
content_length = int(self.headers['Content-Length'])
body = self.rfile.read(content_length)
try:
result = json.loads(body, encoding='utf-8')
self.send_response(200)
self.end_headers()
response = BytesIO()
response.write(b'POST Received: ')
response.write(body)
self.wfile.write(response.getvalue())
except Exception as err:
self.wfile.write('Error: ' + str(err))
httpd = HTTPServer(('localhost', 8000), SimpleHTTPRequestHandler)
httpd.serve_forever()
Проблема возникает со строкой
self.wfile.write('Error: ' + str(err))
выдает ошибку
TypeError: a bytes-like object is required, not 'str'
Я не очень знаком с HTTPServer
, поэтому я не уверен, что здесь происходит. Я также не уверен, в чем разница между response.write
и self.wfile.write
. Я пытался использовать encode
и decode
, но всегда получаю очень запутанные сообщения об ошибках. Как распечатать сообщение об ошибке на консоли веб-сервера и вернуть его отправителю POST?