gpt4 book ai didi

python - 如何将参数传递给 Python 中 BaseHTTPRequestHandler 类的 GET 处理程序方法

转载 作者:行者123 更新时间:2023-12-05 01:39:32 25 4
gpt4 key购买 nike

我有一个用 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()

关于python - 如何将参数传递给 Python 中 BaseHTTPRequestHandler 类的 GET 处理程序方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58183565/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com