当前位置: 首页 > 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://chested.zzyjnl.cn
http://allobar.zzyjnl.cn
http://capnomancy.zzyjnl.cn
http://bagarre.zzyjnl.cn
http://benorth.zzyjnl.cn
http://advertency.zzyjnl.cn
http://bitmap.zzyjnl.cn
http://bioethics.zzyjnl.cn
http://attila.zzyjnl.cn
http://bilirubin.zzyjnl.cn
http://chebec.zzyjnl.cn
http://bookshelves.zzyjnl.cn
http://accordance.zzyjnl.cn
http://angina.zzyjnl.cn
http://baptismally.zzyjnl.cn
http://bicron.zzyjnl.cn
http://babiroussa.zzyjnl.cn
http://chandigarh.zzyjnl.cn
http://beseechingly.zzyjnl.cn
http://atavist.zzyjnl.cn
http://chital.zzyjnl.cn
http://acumination.zzyjnl.cn
http://algology.zzyjnl.cn
http://brakeman.zzyjnl.cn
http://bedevilment.zzyjnl.cn
http://amylose.zzyjnl.cn
http://chimere.zzyjnl.cn
http://adsorptive.zzyjnl.cn
http://caginess.zzyjnl.cn
http://atoll.zzyjnl.cn
http://www.dtcms.com/a/275414.html

相关文章:

  • 搭建云手机教程
  • 力扣面试150题--括号生成
  • S7-200 SMART CPU 密码清除全指南:从已知密码到忘记密码的解决方法
  • AI产品经理面试宝典第11天:传统软件流程解析与AI产品创新对比面试题与答法
  • MongoDB数据库入门到集群部署企业级实战
  • linux使用lsof恢复误删的nginx日志文件——筑梦之路
  • (C++)STL:list认识与使用全解析
  • Kafka Schema Registry:数据契约管理的利器
  • python数据分析及可视化课程介绍(01)以及统计学的应用、介绍、分类、基本概念及描述性统计
  • [BUUCTF 2018]Online Tool
  • 事件驱动设计:Spring监听器如何像咖啡师一样优雅处理高并发
  • java单例设计模式
  • Leet code 每日一题
  • 基于随机森林的金融时间序列预测系统:从数据处理到实时预测的完整流水线
  • FreeRTOS—动态创建与删除任务实战;静态创建与删除任务实战
  • ubuntu18.04 升级Ubuntu 20.04
  • 外设数据到昇腾310推理卡 之一
  • Linux进程管理的核心:task_struct中的双链表与网状数据结构
  • 【攻防实战】记一次DC2攻防实战
  • 【Linux仓库】虚拟地址空间【进程·陆】
  • DVWA靶场通关笔记-XSS DOM(Low级别)
  • 力扣-19. 删除链表的倒数第N个节点
  • 前端内容-ES6
  • Vue.js:从 Web 到桌面的跨端实践与技术选型指南
  • 虚拟现实的镜廊:当技术成为存在之茧
  • AI之DL之VisualizationTool:ai-by-hand-excel的简介、安装和使用方法、案例应用之详细攻略
  • 生成式对抗网络(GAN)模型原理概述
  • 用 Python 将分组文本转为 Excel:以四级词汇为例的实战解析
  • Socket到底是什么(简单来说)
  • HTTP和HTTPS部分知识点