如何将参数传递给 Python 中 BaseHTTPRequestHandler class 的 GET 处理程序方法
How to pass parameter to GET-handler method of BaseHTTPRequestHandler class in Python
我在 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)
向 class GetHandler
的方法 do_GET
传递一个变量:我该怎么做?
编辑
举个例子,假设我在 server = HTTPServer((ip, port), GetHandler)
行之前定义了一个字符串 my_str
并且我想使用这个字符串作为响应消息。
在 Python 中,您实际上可以在函数内部创建 classes。然后,这些 classes 将可以通过闭包访问函数的局部变量。
下面的代码定义了函数make_handler
,它在被调用时定义了一个新的"handler" class,其值在myvariable
中可用,在整个class:
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()
我在 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)
向 class GetHandler
的方法 do_GET
传递一个变量:我该怎么做?
编辑
举个例子,假设我在 server = HTTPServer((ip, port), GetHandler)
行之前定义了一个字符串 my_str
并且我想使用这个字符串作为响应消息。
在 Python 中,您实际上可以在函数内部创建 classes。然后,这些 classes 将可以通过闭包访问函数的局部变量。
下面的代码定义了函数make_handler
,它在被调用时定义了一个新的"handler" class,其值在myvariable
中可用,在整个class:
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()