使用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.pswp.cn/pingmian/89104.shtml
繁体地址,请注明出处:http://hk.pswp.cn/pingmian/89104.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Redis技术笔记-主从复制、哨兵与持久化实战指南

目录 前言 一、Redis主从复制 &#xff08;一&#xff09;Redis主从复制介绍 &#xff08;二&#xff09;基本环境准备 &#xff08;三&#xff09;工作原理 &#xff08;四&#xff09;结构模式 &#xff08;五&#xff09;一主一从&#xff08;无密码&#xff09; 配置…

sundog公司的SilverLining SDK库实现3d动态云层和下雨、下雨、雨夹雪效果

OSG系列文章目录 文章目录OSG系列文章目录前言一、3d动态云与下雨、下雪效果不能同时出现二、3d动态云与下雨、下雪效果不能同时出现的原因三、解决办法&#xff1a;前言 先看下效果&#xff1a;下雨 效果&#xff1a;下雪 效果&#xff1a;雨夹雪 &#x1f324;️ Sundo…

Python:简易的 TCP 服务端与客户端示例

下面是一个完整的 TCP 服务端与客户端示例&#xff0c;适用于 Python 3&#xff0c;使用 socket 模块&#xff0c;并正确处理了中文传输与异常情况&#xff0c;支持基本的多轮通信。TCP 服务端&#xff08;server_tcp.py&#xff09;import socket HOST 127.0.0.1 # 监听本地…

文心一言 4.5 开源深度剖析:中文霸主登场,开源引擎重塑大模型生态

> 百度用一场彻底的开源风暴,宣告中文大模型进入性能与普惠并重的新纪元——这里没有技术黑箱,只有开发者手中跃动的创新火花。 2025年,当全球大模型竞赛进入深水区,百度文心一言4.5的开源如同一颗重磅炸弹,彻底打破了“闭源即领先”的固有认知。这一次,中国团队不…

解决“Windows 无法启动服务”问题指南

错误1067&#xff1a;进程意外终止一、重启计算机有时系统出现临时性的服务故障&#xff0c;重启计算机就可以有效解决问题。需要注意的是&#xff0c;在重启之前&#xff0c;需要保存好所有未保存的工作&#xff0c;以免数据丢失。重启完成后&#xff0c;再次尝试启动相关服务…

银河麒麟(Kylin) - V10 GFB高级服务器操作系统ARM64部署昇腾910b训练机以及Docker安装

银河麒麟(Kylin) - V10 GFB高级服务器操作系统ARM64部署昇腾910b训练机以及Docker安装 原因 项目需要使用Deepseek-r1-distill-qwen-32b来做训练&#xff0c;在此记录 测试环境 服务器配置 型号&#xff1a;G5680V2 CPU&#xff1a;CPU 4Kunpeng 920-5250 NPU&#xff1a;NP…

消息中间件(Kafka VS RocketMQ)

目录 一、概要介绍 二、架构与原理 三、消费模式 1、Kafka—纯拉模式 2、RocketMQ—拉模式 3、RocketMQ—推模式 4、模式对比 四、特殊消息 1、顺序消息 2、消息过滤 3、延迟消息 4、事务消息 5、广播消息 五、高吞吐 六、高可用 七、高可靠 一、概要介绍 Apa…

MyBatis级联查询深度解析:一对多关联实战指南

MyBatis级联查询深度解析&#xff1a;一对多关联实战指南在实际企业级开发中&#xff0c;单表操作仅占20%的场景&#xff0c;而80%的业务需求涉及多表关联查询。本文将以一对多关系为例&#xff0c;深入剖析MyBatis级联查询的实现原理与最佳实践&#xff0c;助你掌握高效的数据…

搜索框的显示与隐藏(展开与收起)

效果如下直接上代码v-if"showAll || 0 < 3" 的意思是&#xff1a;如果 showAll 为 true&#xff0c;或者 0 小于 3&#xff0c;这个表单项就会显示。<el-form :inline"true" class"demo-form-inline" size"default" label-width…

01 启动流程实例

前言本文基于 Activiti 7.0.0.GA 源码&#xff0c;研究 Activiti 如何启动一个流程实例。审批流程图如下图&#xff0c;在此流程图中&#xff0c;存在两个UserTask节点&#xff0c;第一个节点是主管审批&#xff0c;第二个节点是产品经理审批&#xff0c;两个节点中间有一个排他…

LeetCode--47.全排列 II

解题思路&#xff1a;1.获取信息&#xff1a;给定一个可包含重复数字的序列&#xff0c;按任意顺序返回所有不重复的全排列提示信息&#xff1a;1 < nums.length < 8-10 < nums[i] < 102.分析题目&#xff1a;相较于46题&#xff0c;它多限制了一个条件&#xff0c…

vue3 服务端渲染时请求接口没有等到数据,但是客户端渲染是请求接口又可以得到数据

原因是: 服务端请求 后端接收到 请求 ‘Content-Type’: ‘application/x-www-form-urlencoded; charsetUTF-8’ 直接返回错误的code 200000 增加 data: {} 服务端请求 后端接收到 请求 ‘Content-Type’: ‘application/json; charsetUTF-8’ 服务端请求就可以得到数据 expo…

Linux 文件操作命令大全:从入门到精通的实用指南

Linux 文件操作命令大全&#xff1a;从入门到精通的实用指南 在 Linux 系统中&#xff0c;文件操作是日常工作的核心内容之一。无论是开发者、运维工程师还是 Linux 爱好者&#xff0c;掌握常用的文件操作命令都能极大提升工作效率。本文将详细介绍 Linux 系统中最常用的文件操…

Linux开发利器:探秘开源,构建高效——基础开发工具指南(上)【包管理器/Vim】

♥♥♥~~~~~~欢迎光临知星小度博客空间~~~~~~♥♥♥ ♥♥♥零星地变得优秀~也能拼凑出星河~♥♥♥ ♥♥♥我们一起努力成为更好的自己~♥♥♥ ♥♥♥如果这一篇博客对你有帮助~别忘了点赞分享哦~♥♥♥ ♥♥♥如果有什么问题可以评论区留言或者私信我哦~♥♥♥ ✨✨✨✨✨✨个人…

基于迁移学习的培养基配方开发方法

本文为学习笔记&#xff0c;原文专利&#xff1a; 中国专利公布公告 然后输入 202110622279.7 概览 一、问题背景 传统培养基开发痛点&#xff1a; 数据依赖&#xff1a;需大量细胞实验&#xff08;1000配方&#xff09;训练专用模型 迁移性差&#xff1a;A细胞模型无法直接…

Web3.0与元宇宙:重构数字文明的技术范式与社会变革

一、技术融合&#xff1a;Web3.0与元宇宙的底层架构互补1.1 区块链与智能合约&#xff1a;构建信任基石去中心化信任机制&#xff1a;Web3.0的区块链技术为元宇宙提供去中心化信任框架&#xff0c;虚拟资产&#xff08;如土地、道具&#xff09;通过NFT&#xff08;非同质化代币…

Java: OracleHelper

/*** encoding: utf-8* 版权所有 2025 ©涂聚文有限公司 * 许可信息查看&#xff1a;言語成了邀功盡責的功臣&#xff0c;還需要行爲每日來值班嗎* 描述&#xff1a; https://www.oracle.com/database/technologies/appdev/jdbc-downloads.html ojdbc11* Author : geovi…

OSPFv3-一二类LSA

文章目录OSPFv3 LSA类型Router LSANetwork LSA&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;Datacom专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2025年07月12日20点01分 OSPFv3 LSA类型 Router LSA 不再包含地址信息&#xff0c;使能 OS…

HugeGraph 【图数据库】JAVA调用SDK

1.引入依赖<dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>28.0-jre</version> </dependency><dependency><groupId>com.squareup.okhttp3</groupId><artifac…

软考中级【网络工程师】第6版教材 第2章 数据通信基础(中)

考点分析&#xff1a;重要程度&#xff1a;⭐⭐⭐&#xff0c;本章可能是全书最难的章节&#xff0c;偏理论&#xff0c;公式多除了传输介质&#xff0c;其他知识点只考选择题&#xff0c;考试一般占3 ~ 5分高频考点&#xff1a;PCM、奈奎斯特定理、曼彻斯特编码&#xff1b;难…