当前位置: 首页 > web >正文

使用python 实现一个http server

下面是一个使用 Python 内置库 http.server 的简单 HTTP 服务器实现。不需要安装任何第三方库,非常适合做演示或开发测试用。

from http.server import HTTPServer, BaseHTTPRequestHandlerclass SimpleHTTPRequestHandler(BaseHTTPRequestHandler):def do_GET(self):# 设置响应状态码self.send_response(200)# 设置响应头self.send_header('Content-type', 'text/html; charset=utf-8')self.end_headers()# 响应内容self.wfile.write(b"<h1>Hello, World! This is a simple HTTP server.</h1>")if __name__ == '__main__':# 监听 127.0.0.1:8080server_address = ('', 8080)httpd = HTTPServer(server_address, SimpleHTTPRequestHandler)print("Server started on http://127.0.0.1:8080")httpd.serve_forever()

使用方法:

  1. 保存为 server.py
  2. 运行:python server.py
  3. 打开浏览器访问:http://127.0.0.1:8080

你可以根据需要扩展 do_POSTdo_PUT 等方法,实现更多 HTTP 功能。


下面提供一个功能更丰富的 HTTP server 实现示例,采用流行的第三方库 Flask (适合实际开发),实现以下功能:

  • 支持 GET、POST 方法。
  • 路由分发支持路径参数。
  • JSON 数据的接收与响应。
  • 提供 404 错误处理。

如果你需要其它框架(如 FastAPI)、或更复杂的功能可以继续说明。


一、安装 Flask

首先请确保已安装 Flask:

pip install flask

二、示例代码

from flask import Flask, request, jsonify, abortapp = Flask(__name__)# 首页
@app.route("/")
def index():return "<h1>Welcome to the complex Flask HTTP Server!</h1>"# 带参数的路由
@app.route("/hello/<name>")
def hello(name):return f"<h2>Hello, {name}!</h2>"# 处理 GET 和 POST 请求
@app.route("/echo", methods=["GET", "POST"])
def echo():if request.method == "GET":msg = request.args.get('msg', 'Nothing received')return jsonify({'method': 'GET', 'msg': msg})elif request.method == "POST":data = request.jsonreturn jsonify({'method': 'POST', 'data': data})# 404 错误处理
@app.errorhandler(404)
def page_not_found(e):return jsonify({'error': 'Not Found'}), 404if __name__ == "__main__":app.run(host='0.0.0.0', port=8888, debug=True)

三、使用说明

  1. 运行:

    python server.py
    
  2. 测试各接口:

    • 访问 http://localhost:8888/
    • 访问 http://localhost:8888/hello/Alice
    • GET 请求:http://localhost:8888/echo?msg=hello
    • POST 请求:
      curl -X POST -H "Content-Type: application/json" -d '{"test": 123}' http://localhost:8888/echo
      
  3. 访问未定义的路径,返回 404。


http://www.xdnf.cn/news/15340.html

相关文章:

  • 传感器WSNs TheDataLinkLayer——X-MAC
  • 基于随机森林的金融时间序列预测系统:从数据处理到实时预测的完整流水线
  • [特殊字符] 实时数据洪流突围战:Flink+Paimon实现毫秒级分析的架构革命(附压测报告)——日均百亿级数据处理成本降低60%的工业级方案
  • 【离线数仓项目】——电商域DWS层开发实战
  • 使用FastAdmin框架开发
  • 蒙特卡洛树搜索方法实践
  • 【云端深度学习训练与部署平台】AutoDL连接VSCode运行深度学习项目的全流程
  • C# 接口(派生成员作为实现)
  • 钉钉企业应用开发实战:从零构建组织级业务工具
  • MySQL 内外连接
  • monorepo 发布库 --- 打包文件
  • 线程属性设置全攻略
  • 深入详解:决策树在医学影像脑部疾病诊断中的应用与实现
  • 构建AI Agent的完整实战指南:从邮件助手案例看6步落地方法
  • 幸福的蓝图——搭建你的“快乐与意义”金字塔
  • AI 助力编程:Cursor Vibe Coding 场景实战演示
  • 分音塔科技(BABEL Technology) 的公司背景、股权构成、产品类型及技术能力的全方位解读
  • 部署Harbor私有仓库
  • 自动化证书续签工具针对VPS服务器HTTPS服务的维护实践
  • 2025 年 06 月 GitHub 十大热门项目排行榜
  • 【Docker基础】Dockerfile核心概念解析:什么是Dockerfile?与镜像、容器的关系
  • 【Linux-云原生-笔记】Apache相关
  • 模型驱动的架构MDA的案例
  • Vscode中使用C++代码进行debug
  • 大模型KV缓存量化误差补偿机制:提升推理效率的关键技术
  • 人工智能自动化编程:传统软件开发vs AI驱动开发对比分析
  • npgsql/dapper/postgresql的时区问题
  • 【解决办法】报错Found dtype Long but expected Float
  • 每日算法刷题Day46 7.12:leetcode前缀和3道题和差分2道题,用时1h30min
  • 【算法笔记】7.LeetCode-Hot100-图论专项