极简Python服务器后端

在Python中,可以使用http.server模块和json模块来创建一个简单的HTTP服务器,该服务器可以响应80端口上的/query POST请求,并且请求体为JSON格式。

需要注意,在Linux系统上,使用低于1024的端口(如80端口)需要root权限。

示例代码:

python 复制代码
import http.server
import socketserver
import json

# 自定义请求处理类
class MyHandler(http.server.SimpleHTTPRequestHandler):
    def do_POST(self):
        if self.path == '/query':
            # 获取请求体的长度
            content_length = int(self.headers['Content-Length'])
            # 读取请求体
            post_data = self.rfile.read(content_length)
            try:
                # 解析JSON数据
                json_data = json.loads(post_data.decode('utf-8'))
                # 打印接收到的JSON数据
                print("Received JSON data:", json_data)
                # 发送响应头
                self.send_response(200)
                self.send_header('Content-type', 'application/json')
                self.end_headers()
                # 构造响应数据
                response_data = {'message': 'JSON data received successfully'}
                # 将响应数据转换为JSON字符串并发送
                self.wfile.write(json.dumps(response_data).encode('utf-8'))
            except json.JSONDecodeError:
                # 若JSON解析失败,发送400错误响应
                self.send_error(400, 'Bad Request: Invalid JSON data')
        else:
            # 若请求路径不是/query,发送404错误响应
            self.send_error(404, 'Not Found')

# 服务器的端口号
PORT = 80

with socketserver.TCPServer(("", PORT), MyHandler) as httpd:
    print(f"Serving at port {PORT}")
    try:
        # 启动服务器
        httpd.serve_forever()
    except KeyboardInterrupt:
        print("Server stopped by user.")

代码说明:

  1. 自定义请求处理类MyHandler :继承自http.server.SimpleHTTPRequestHandler,并重写do_POST方法来处理POST请求。
  2. 处理/query请求
    • 获取请求体的长度,并读取请求体。
    • 尝试解析JSON数据,如果解析成功,打印接收到的JSON数据,并返回一个包含成功消息的JSON响应。
    • 如果JSON解析失败,返回400错误响应。
  3. 处理其他请求 :如果请求路径不是/query,返回404错误响应。
  4. 启动服务器 :使用socketserver.TCPServer创建一个TCP服务器,并在指定的端口上启动。

运行代码:

在Linux系统上,需要以root权限运行该脚本(修改端口至1024以上就不需要root):

sh 复制代码
sudo python3 server.py

测试服务器:

使用curl命令来测试服务器:

sh 复制代码
curl -X POST -H "Content-Type: application/json" -d '{"key": "value"}' http://localhost/query

这样,服务器将接收并解析JSON数据,并返回一个成功消息。

相关推荐
早睡冠军候选人5 小时前
Ansible学习----Ansible Playbook
运维·服务器·学习·云原生·容器·ansible
sulikey5 小时前
从实验出发深入理解Linux目录权限:r、w、x分别控制什么?能否进入目录到底由谁决定?
linux·运维·服务器·ubuntu·centos
叶凡要飞5 小时前
RTX5060Ti安装双系统ubuntu22.04各种踩坑点(黑屏,引导区修复、装驱动、server版本安装)
人工智能·python·yolo·ubuntu·机器学习·操作系统
yuluo_YX5 小时前
VSR 项目解析
人工智能·python
计算衎5 小时前
python通过win32com库调用UDE工具来做开发调试实现自动化源码,以及UDE的知识点介绍
python·c/c++·pywin32·ude·com api
Full Stack Developme6 小时前
java.nio 包详解
java·python·nio
新手村领路人6 小时前
opencv gpu cuda python c++版本测试代码
python·opencv·cuda
高洁016 小时前
大模型-高效优化技术全景解析:微调 量化 剪枝 梯度裁剪与蒸馏 下
人工智能·python·深度学习·神经网络·知识图谱
white-persist7 小时前
CSRF 漏洞全解析:从原理到实战
网络·python·安全·web安全·网络安全·系统安全·csrf
游戏开发爱好者87 小时前
FTP 抓包分析实战,命令、被动主动模式要点、FTPS 与 SFTP 区别及真机取证流程
运维·服务器·网络·ios·小程序·uni-app·iphone