Python http.server和BaseHTTPRequestHandler-多端点API



通过执行python -m http.server,您可以调用一个简单的web服务器,该服务器为目录中的文件提供服务。

我的问题是如何使用BaseHTTPRequestHandler 来创建多个API端点

例如,如果我要在api目录中创建一个名为"helloworld.py"的文件,代码为:

from http.server import BaseHTTPRequestHandler
class app(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header(“Content-type”, “text/plain”)
self.end_headers()
self.wfile.write(b”Hello World”)
return

访问的http://localhost/api/helloworld将显示文本Hello World。

有办法做到这一点吗?

TL;DR如何将BaseHTTPRequestHandler函数合并到http.server中,并将其作为后端处理程序执行?

谢谢!

您可以使用regex检查self.path是否有所需的端点。它也可以应用于do_POST

import re
from http.server import BaseHTTPRequestHandler, HTTPServer
class app(BaseHTTPRequestHandler):
def do_GET(self):
self.send_response(200)
self.send_header('Content-type','text/html')
self.end_headers()
if re.search('/api/helloworld', self.path):
message = "Hello, World"
self.wfile.write(bytes(message, "utf8"))
with HTTPServer(('', 8000), app) as server:
server.serve_forever()

python helloworld.py将无限期运行服务器,然后

$ curl localhost:8000/api/helloworld                                                 
Hello, World%

相关内容

  • 没有找到相关文章

最新更新