如何将参数传递给 Python 中 BaseHTTPRequestHandler 类的 GET-handler 方法



我有一个用 Python 创建的 HTTP 服务器

from http.server import BaseHTTPRequestHandler, HTTPServer
import bson.json_util
import json
server = HTTPServer((ip, port), GetHandler)
print ('Starting server, use <Ctrl-C> to stop')
server.serve_forever()

哪里GetHandler

class GetHandler(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'application/json')
self.end_headers()
def do_GET(self):
json_string = json.dumps({"message" : "Hello"}, default=bson.json_util.default)+"n"
self._set_headers()
self.wfile.write(json_string.encode())#encoding='UTF-8'
return

假设我想从第server = HTTPServer((ip, port), GetHandler)行将一个变量传递给类GetHandler的方法do_GET:我该怎么做?

编辑

例如,假设我在行server = HTTPServer((ip, port), GetHandler)之前定义了一个字符串my_str并且我想将此字符串用作响应消息。

在Python中,你实际上可以在函数中创建类。然后,这些类将通过闭包访问函数的局部变量。

下面的代码定义了函数make_handler调用该函数时定义了一个新的"处理程序"类,其值在整个类中可用myvariable

import json
from http.server import BaseHTTPRequestHandler, HTTPServer

def make_handler(myvariable):
class GetHandler(BaseHTTPRequestHandler):
def _set_headers(self):
self.send_response(200)
self.send_header('Content-type', 'text/plain')
self.end_headers()
def do_GET(self):
self._set_headers()
self.wfile.write(myvariable.encode('utf8'))
return
return GetHandler
server = HTTPServer(('127.0.0.1', 50002), make_handler('my_str'))
print ('Starting server, use <Ctrl-C> to stop')
server.serve_forever()

相关内容

  • 没有找到相关文章

最新更新