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

使用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.lryc.cn/news/586143.html

相关文章:

  • Elasticsearch 线程池
  • MIG_IP核的时钟系统
  • 使用 Java 开发大数据应用:Hadoop 与 Java API 的结合
  • Linux中使用快捷方式加速SSH访问
  • 让 VSCode 调试器像 PyCharm 一样显示 Tensor Shape、变量形状、变量长度、维度信息
  • 细解muduo中的每个核心类
  • pytorch深度学习—RNN-循环神经网络
  • 关于wpf的自适应
  • vue2和vue3的响应式原理
  • Java中的内存溢出详解
  • 【Python练习】039. 编写一个函数,反转一个单链表
  • Linux系统使用Verdaccio搭建Npm私服
  • 初学者关于算法复杂度的学习笔记
  • python数据分析及可视化课程介绍(01)以及统计学的应用、介绍、分类、基本概念及描述性统计
  • 【Datawhale AI 夏令营】 用AI做带货视频评论分析(二)
  • 使用Java完成下面程序
  • 13. https 是绝对安全的吗
  • Spring AOP 是如何生效的(入口源码级解析)?
  • 基于Java的Markdown到Word文档转换工具的实现
  • 码头智能哨兵:AI入侵检测系统如何终结废钢盗窃困局
  • DirectX Repair修复工具下载,.NET修复,DirectX修复
  • 贪心算法题解——跳跃游戏 II【LeetCode】
  • 电商订单数据分析全流程:从数据处理到可视化洞察
  • AI产品经理面试宝典第11天:传统软件流程解析与AI产品创新对比面试题与答法
  • 网络连接:拨号连接宽带PPPOE
  • 维基艺术图片: python + scrapy 爬取图片
  • 物联网设备数据驱动3D模型的智能分析与预测系统
  • 深入理解 QSettings:Qt 中的应用程序配置管理
  • 多线程的区别和联系
  • SQL server之版本的初认知