在 python 中创建一个没有 Flask 的 REST API

Sli*_*ind 5 rest json urllib flask python-3.x

我想在不使用 Flask 的情况下创建 REST API。我曾经使用 Flask 创建过一次,如下所示,但现在我想尝试不使用 Flask。我开始知道 urllib 是执行此操作的软件包之一,但不知道该怎么做。即使除了 urllib 之外还有其他方法,那也没关系。

from werkzeug.wrappers import Request, Response
import json
from flask import Flask, request, jsonify
app = Flask(__name__)

with open ("jsonfile.json") as f:
    data = json.load(f)
    #data=f.read()

@app.route('/', methods=['GET', 'POST'])
def hello():
    return jsonify(data)

if __name__ == '__main__':
    from werkzeug.serving import run_simple
    run_simple('localhost', 9000, app)
Run Code Online (Sandbox Code Playgroud)

小智 3

你可以尝试这样的事情

\n
import json\nimport http.server\nimport socketserver\nfrom typing import Tuple\nfrom http import HTTPStatus\n\n\nclass Handler(http.server.SimpleHTTPRequestHandler):\n\n    def __init__(self, request: bytes, client_address: Tuple[str, int], server: socketserver.BaseServer):\n        super().__init__(request, client_address, server)\n\n    @property\n    def api_response(self):\n        return json.dumps({"message": "Hello world"}).encode()\n\n    def do_GET(self):\n        if self.path == '/':\n            self.send_response(HTTPStatus.OK)\n            self.send_header("Content-Type", "application/json")\n            self.end_headers()\n            self.wfile.write(bytes(self.api_response))\n\n\nif __name__ == "__main__":\n    PORT = 8000\n    # Create an object of the above class\n    my_server = socketserver.TCPServer(("0.0.0.0", PORT), Handler)\n    # Star the server\n    print(f"Server started at {PORT}")\n    my_server.serve_forever()\n
Run Code Online (Sandbox Code Playgroud)\n

并像这样进行测试

\n
\xe2\x86\x92 curl http://localhost:8000\n{"message": "Hello world"}%\n
Run Code Online (Sandbox Code Playgroud)\n

但请记住,此代码不稳定,只是示例

\n