一、REST 與 HTTP 請求/響應(yīng)速覽 ??

組件 說明
URL 資源地址
Method GET(查)/ POST(改/增)/ PUT / DELETE 等
Headers Content-Type、Authorization 等元數(shù)據(jù)
Body JSON、表單、二進(jìn)制等載荷

響應(yīng):狀態(tài)碼 + Headers + Body(JSON 最常用)


二、用 http.server 搭建最小 POST/GET 服務(wù) ??

① 目錄結(jié)構(gòu)

mini_http/
├── server.py
└── README.md

② server.py

from http.server import HTTPServer, BaseHTTPRequestHandler
import json

data_store = {}   # 內(nèi)存假數(shù)據(jù)庫

class MyHandler(BaseHTTPRequestHandler):
    def do_POST(self):
        if self.path == "/api/post":
            length = int(self.headers["Content-Length"])
            payload = json.loads(self.rfile.read(length))
            data_store[payload["id"]] = payload
            self.send_response(201)
            self.send_header("Content-type", "application/json")
            self.end_headers()
            self.wfile.write(json.dumps({"status": "ok"}).encode())

    def do_GET(self):
        if self.path.startswith("/api/get/"):
            key = self.path.split("/")[-1]
            record = data_store.get(key)
            if record:
                self.send_response(200)
                self.send_header("Content-type", "application/json")
                self.end_headers()
                self.wfile.write(json.dumps(record).encode())
            else:
                self.send_response(404)
                self.end_headers()

if __name__ == "__main__":
    host, port = "localhost", 8000
    print(f"Serving on http://{host}:{port}")
    HTTPServer((host, port), MyHandler).serve_forever()

③ 啟動(dòng) & 測試

python server.py
# 另開終端
curl -X POST http://localhost:8000/api/post \
     -H "Content-Type: application/json" \
     -d '{"id":"test","key":"value"}'
curl http://localhost:8000/api/get/test
# → {"key": "value"}

??? 寫完處理器別忘了跑「代碼優(yōu)化」提示詞,一鍵診斷慢查詢與重復(fù)請求,讓接口響應(yīng)提速 30 %!


三、Flask 重構(gòu):更優(yōu)雅的路由與模板渲染 ??

① 安裝 & 項(xiàng)目結(jié)構(gòu)

pip install flask
mkdir flask_http && cd flask_http
├── app.py
├── templates/
│   └── index.html
└── static/
    ├── style.css
    └── app.js

② app.py

from flask import Flask, request, jsonify, render_template

app = Flask(__name__)
store = {}

@app.route("/api/post", methods=["POST"])
def api_post():
    data = request.get_json()
    store[data["id"]] = data
    return jsonify({"status": "ok"}), 201

@app.route("/api/get/<uid>")
def api_get(uid):
    return jsonify(store.get(uid, {"error": "Not found"})), (200 if uid in store else 404)

@app.route("/")
def index():
    # 把內(nèi)存數(shù)據(jù)渲染到頁面
    return render_template("index.html", records=store)

if __name__ == "__main__":
    app.run(debug=True)

③ templates/index.html

<!doctype html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>HTTP Server Demo</title>
    <link rel="stylesheet" href="{{ url_for('static', filename='style.css') }}">
</head>
<body>
    <h1>Data Store</h1>
    <ul>
        {% for uid, rec in records.items() %}
        <li>{{ uid }}: {{ rec }}</li>
        {% endfor %}
    </ul>
    <script src="{{ url_for('static', filename='app.js') }}"></script>
</body>
</html>

④ static/style.css

body{font-family:Arial,Helvetica,sans-serif;background:#f7f7f7;margin:40px}
h1{color:#333}
ul{list-style:none;padding:0}
li{background:#fff;margin:5px 0;padding:8px;border-radius:4px}

⑤ 啟動(dòng) & 訪問

flask --app app run --debug
# 瀏覽器 http://127.0.0.1:5000

四、調(diào)試與自動(dòng)重載 ??


五、生產(chǎn)部署小貼士 ??

  1. WSGI 服務(wù)器
    pip install gunicorn
    gunicorn -w 4 -b 0.0.0.0:8000 app:app
  2. Nginx 反向代理
    將靜態(tài)文件交由 Nginx 處理,減少 Flask 壓力
  3. 環(huán)境變量管理
    使用 python-dotenv 把敏感配置放 .env,避免硬編碼

六、常見坑排雷 ??

問題 解決
http.server 無法解析 JSON 需手動(dòng) json.loads(self.rfile.read(...))
Flask 模板/靜態(tài)文件 404 確保放在 templates/ & static/ 目錄
跨域阻塞 開發(fā)期可用 flask-corsCORS(app)
自動(dòng)重載不生效 檢查是否用了 app.run(debug=True) 且直接 python app.py

七、一鍵單元測試(Flask 示例)??

# test_app.py
import unittest, json
from app import app

class FlaskTest(unittest.TestCase):
    def setUp(self):
        self.client = app.test_client()

    def test_post_get_flow(self):
        # POST
        resp = self.client.post("/api/post", 
                                data=json.dumps({"id": "t1", "key": "val"}),
                                content_type="application/json")
        self.assertEqual(resp.status_code, 201)
        # GET
        resp = self.client.get("/api/get/t1")
        self.assertEqual(resp.json["key"], "val")

if __name__ == "__main__":
    unittest.main()

運(yùn)行:

python test_app.py

八、結(jié)語 ??

從標(biāo)準(zhǔn)庫 http.server 到 Flask,你已成功:

先用「代碼生成」快速產(chǎn)出 SDK 與錯(cuò)誤重試邏輯,再用 KPI 面板持續(xù)監(jiān)控請求延遲、錯(cuò)誤率和單元測試通過率,你的 HTTP 服務(wù)器將更快、更穩(wěn)地?fù)屨际袌???!

原文鏈接: https://www.xingyulei.com/post/py-http-server/index.html

熱門推薦
一個(gè)賬號試用1000+ API
助力AI無縫鏈接物理世界 · 無需多次注冊
3000+提示詞助力AI大模型
和專業(yè)工程師共享工作效率翻倍的秘密
返回頂部
上一篇
交叉熵的Numpy實(shí)現(xiàn):從理論到實(shí)踐
下一篇
用 Flask 打造高可用 REST API:從環(huán)境搭建到 PUT/DELETE 全棧實(shí)戰(zhàn)
国内精品久久久久影院日本,日本中文字幕视频,99久久精品99999久久,又粗又大又黄又硬又爽毛片
gogogo免费视频观看亚洲一| 国产精品一级黄| 日韩午夜激情av| 国产一区二区毛片| 亚洲精品日韩专区silk| 色综合激情五月| 麻豆精品一区二区三区| 51精品秘密在线观看| 天天综合日日夜夜精品| 欧美日韩精品久久久| 亚洲激情欧美激情| 成人国产亚洲欧美成人综合网| 97se亚洲国产综合自在线| 7777精品伊人久久久大香线蕉| 美腿丝袜亚洲三区| 日韩午夜激情电影| 美女视频一区二区三区| 日韩欧美一级在线播放| 国产成人高清视频| 亚洲一区国产视频| 欧美日韩国产大片| 日韩丝袜美女视频| 91精品国产入口| 日韩一区二区麻豆国产| 91精品国产综合久久久久久久 | 亚洲精品网站在线观看| 日韩综合小视频| 精品一区二区精品| 国产成人免费av在线| 亚洲va韩国va欧美va精品| 欧美tickling网站挠脚心| av中文字幕在线不卡| 成人小视频在线| 一区二区三区国产精华| 国产日产欧产精品推荐色| 日本在线不卡一区| 国产大陆精品国产| 欧美中文字幕一二三区视频| av电影天堂一区二区在线| 国产不卡免费视频| 色综合中文字幕国产| 国内成人免费视频| 亚洲成av人在线观看| 久久嫩草精品久久久久| 美女视频黄 久久| aaa欧美色吧激情视频| 91蜜桃传媒精品久久久一区二区| 欧美精品色一区二区三区| 欧美日韩不卡在线| 中文字幕一区二区三| 亚洲色图视频网| 日本一区二区在线不卡| 国产盗摄女厕一区二区三区| 欧美一级夜夜爽| 亚洲色欲色欲www在线观看| 国产一区二区福利视频| 在线观看成人小视频| 久久久精品人体av艺术| 亚洲中国最大av网站| 日本不卡高清视频| 欧美妇女性影城| 成人黄色国产精品网站大全在线免费观看| 国产欧美一区二区三区鸳鸯浴| 日韩成人精品在线| 日本久久电影网| 一区二区欧美精品| 国产高清亚洲一区| 欧美日韩国产另类一区| 色综合久久中文综合久久97| 国产精品福利一区| 7777精品伊人久久久大香线蕉经典版下载 | 一本色道久久综合亚洲91| 国产欧美一区二区精品仙草咪| 婷婷亚洲久悠悠色悠在线播放| 91久久线看在观草草青青| 亚洲欧美国产三级| 93久久精品日日躁夜夜躁欧美| 国产精品一区二区三区乱码| 偷拍自拍另类欧美| 欧美一区二区在线免费观看| 亚洲第一在线综合网站| 精品99久久久久久| 色婷婷综合久久久久中文 | 日本一区中文字幕 | 亚洲精品一区二区三区精华液| 国产乱妇无码大片在线观看| 中文字幕在线播放不卡一区| 国产视频一区二区在线| 国产亚洲精久久久久久| 日本精品一级二级| 国产91精品露脸国语对白| 国产一区二区在线视频| 视频一区欧美日韩| 国产91高潮流白浆在线麻豆| 激情久久五月天| 亚洲国产wwwccc36天堂| 亚洲国产精品影院| 日韩理论片一区二区| 国产区在线观看成人精品| 欧美精品一区二区高清在线观看| 69久久99精品久久久久婷婷| 91激情五月电影| 欧美日韩不卡一区| av动漫一区二区| 床上的激情91.| 久久久精品欧美丰满| 亚洲成人你懂的| 久久精品国产在热久久| 不卡的电影网站| 91国偷自产一区二区三区观看 | 亚洲欧洲美洲综合色网| 91在线视频观看| 亚洲三级视频在线观看| 亚洲精品美国一| 国产精品一区二区在线看| 欧美伊人精品成人久久综合97| 91美女视频网站| 午夜一区二区三区视频| 欧美日韩精品免费观看视频| 精品捆绑美女sm三区| 亚洲午夜激情网页| 国产成人午夜精品5599| 日韩一区二区三区高清免费看看| 免费成人结看片| 久久综合久久综合久久| 精品亚洲国内自在自线福利| 风间由美一区二区三区在线观看 | 欧美日韩成人综合天天影院| 欧美一区二区在线免费观看| 狠狠色丁香久久婷婷综合_中 | 国产在线麻豆精品观看| 欧美视频一区二区| 精品综合免费视频观看| 国产精品理论片在线观看| 99久久国产免费看| 亚洲自拍偷拍综合| 欧美一区二区性放荡片| 国产成人av电影在线播放| 亚洲国产一区二区在线播放| 国产亚洲成av人在线观看导航 | 日韩和的一区二区| 亚洲超碰精品一区二区| 亚洲一区二区三区四区的| 亚洲欧美日韩国产综合在线| 久久久久久久性| 日韩一区二区三区四区| 日韩精品资源二区在线| 欧美成人官网二区| 亚洲国产精品精华液ab| 亚洲卡通动漫在线| 国产成人精品aa毛片| 国产日本亚洲高清| 成人中文字幕在线| 久久精品亚洲麻豆av一区二区| 国产精品亲子伦对白| 视频一区国产视频| 日韩免费视频线观看| 视频一区视频二区中文| 一本久久综合亚洲鲁鲁五月天| 亚洲视频免费在线| 国产欧美精品区一区二区三区| 欧美日韩一级视频| 欧美大片一区二区| 国产亚洲一区二区在线观看| 欧美α欧美αv大片| 久久夜色精品国产噜噜av| 久久美女高清视频| 国产欧美综合在线| www.一区二区| 精品国产污网站| 1000部国产精品成人观看| 午夜电影网亚洲视频| 免费三级欧美电影| 99麻豆久久久国产精品免费优播| 欧美偷拍一区二区| 亚洲小说春色综合另类电影| 免费在线看成人av| 欧美私人免费视频| 午夜精品久久久久久久99水蜜桃| 亚洲第一主播视频| 色综合视频一区二区三区高清| 欧美激情在线一区二区三区| 亚洲国产视频直播| 91久久香蕉国产日韩欧美9色| 亚洲二区视频在线| 亚洲一区二区四区蜜桃| 成人在线视频一区| 欧美国产欧美综合| 7799精品视频| 国内精品自线一区二区三区视频| 欧美福利视频一区| 99久久er热在这里只有精品15 | 国产精品综合在线视频| 中文字幕一区二区在线观看| 激情欧美日韩一区二区| 国产精品久久网站| 欧美一级精品在线| 欧美哺乳videos| 色一情一乱一乱一91av| 色综合久久久久综合|