極簡Python服務器后端

在Python中,可以使用http.server模塊和json模塊來創建一個簡單的HTTP服務器,該服務器可以響應80端口上的/query POST請求,并且請求體為JSON格式。
需要注意,在Linux系統上,使用低于1024的端口(如80端口)需要root權限。

示例代碼:

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 = 80with 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):

sudo python3 server.py

測試服務器:

使用curl命令來測試服務器:

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

這樣,服務器將接收并解析JSON數據,并返回一個成功消息。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/70767.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/70767.shtml
英文地址,請注明出處:http://en.pswp.cn/web/70767.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

文檔檢索服務平臺

文檔檢索服務平臺是基于Elasticsearch的全文檢索,包含數據采集、數據清洗、數據轉換、數據檢索等模塊。 項目地址:Github、國內Gitee 演示地址:http://silianpan.cn/gdss/ 以下是演示角色和賬號(密碼同賬號)&#xf…

關于Postman自動獲取token

在使用postman測試聯調接口時,可能每個接口都需要使用此接口生成的令牌做Authorization的Bearer Token驗證,最直接的辦法可能會是一步一步的點擊,如下圖: 在Authorization中去選擇Bearer Token,然后將獲取到的token粘貼…

清華大學DeepSeek文檔下載,清華大學deepseek下載(完成版下載)

文章目錄 前言一、清華大學DeepSeek使用手冊下載二、清華大學DeepSeek使用手冊思維導圖 前言 這是一篇關于清華大學deepseek使用手冊pdf的介紹性文章,主要介紹了DeepSeek的定義、功能、使用方法以及如何通過提示語設計優化AI性能。以下是對這些核心內容的簡要概述&…

Linux:(3)

一:Linux和Linux互傳(壓縮包) scp:Linux scp 命令用于 Linux 之間復制文件和目錄。 scp 是 secure copy 的縮寫, scp 是 linux 系統下基于 ssh 登陸進行安全的遠程文件拷貝命令。 scp 是加密的,rcp 是不加密的,scp 是…

【新人系列】Python 入門專欄合集

? 個人博客:https://blog.csdn.net/Newin2020?typeblog 📝 專欄地址:https://blog.csdn.net/newin2020/category_12801353.html 📣 專欄定位:為 0 基礎剛入門 Python 的小伙伴提供詳細的講解,也歡迎大佬們…

Arcgis 實用制圖技巧--如何制作“陰影”效果

今天給大家介紹arcgis中陰影效果的制作方法,操作很簡單,在ArcMap當中使用制圖表達和移動幾何方式就可以輕松實現。 左側地圖的圖形背景組織很差。右側地圖通過使用陰影效果突出了重點內容。今天,我將要介紹兩種陰影效果的創建方法:第一,純色陰影(single color);第二,漸變…

pandas如何在dataframe上再添加一個dataframe

在pandas中,通常將一個DataFrame與另一個DataFrame進行合并或連接操作,主要有concat函數、merge函數和join方法三種方式,以下是具體介紹: ### 使用concat函數 concat函數可以沿著指定軸將多個DataFrame連接在一起,默認…

YOLOv12 ——基于卷積神經網絡的快速推理速度與注意力機制帶來的增強性能結合

概述 實時目標檢測對于許多實際應用來說已經變得至關重要,而Ultralytics公司開發的YOLO(You Only Look Once,只看一次)系列一直是最先進的模型系列,在速度和準確性之間提供了穩健的平衡。注意力機制的低效阻礙了它們在…

OpenAI開放Deep Research權限,AI智能體大戰升級,DeepSeek與Claude迎來新對決

每周跟蹤AI熱點新聞動向和震撼發展 想要探索生成式人工智能的前沿進展嗎?訂閱我們的簡報,深入解析最新的技術突破、實際應用案例和未來的趨勢。與全球數同行一同,從行業內部的深度分析和實用指南中受益。不要錯過這個機會,成為AI領…

鴻蒙5.0實戰案例:基于RichEditor的評論編輯

往期推文全新看點(文中附帶全新鴻蒙5.0全棧學習筆錄) ?? 鴻蒙(HarmonyOS)北向開發知識點記錄~ ?? 鴻蒙(OpenHarmony)南向開發保姆級知識點匯總~ ?? 鴻蒙應用開發與鴻蒙系統開發哪個更有前景&#…

通過命令啟動steam的游戲

1. 啟動Steam客戶端 在命令行輸入以下命令來啟動Steam客戶端: start steam://open/main 如果Steam未安裝在默認路徑,可能需要先定位到Steam的安裝目錄,例如: cd C:\Program Files (x86)\Steam start steam://open/main 2. 通過…

RIP-AV:使用上下文感知網絡進行視網膜動脈/靜脈分割的聯合代表性實例預訓練

文章目錄 RIP-AV: Joint Representative Instance Pre-training with Context Aware Network for Retinal Artery/Vein Segmentation摘要方法實驗結果 RIP-AV: Joint Representative Instance Pre-training with Context Aware Network for Retinal Artery/Vein Segmentation …

單片機總結【GPIO/TIM/IIC/SPI/UART】

一、GPIO 1、概念 通用輸入輸出口;開發者可以根據自己的需求將其配置為輸入或輸出模式,以實現與外部設備進行數據交互、控制外部設備等功能。簡單來說,GPIO 就像是計算機或微控制器與外部世界溝通的 “橋梁”。 2、工作模式 工作模式性質特…

.gitignore 文件中添加忽略 .pdb 文件

我在項目的根目錄下創建.gitignore文件。打開.gitignore文件并添加忽略.pdb文件的規則。如下: 已經在 .gitignore 文件中添加了忽略 .pdb 文件的規則,但是提交到 Git 倉庫時仍然看到了 .pdb 文件,這通常意味著 .pdb 文件在 .gitignore 文件被…

ubuntu配置jmeter

1.前提準備 系統 ubuntu server 22.04 前提條件:服務器更新apt與安裝lrzsz:更新apt: sudo apt update安裝lrzsz: 命令行下的上傳下載文件工具 sudo apt install lrzszsudo apt install zip2.安裝jemeter 2.1.下載jdk17 輸入命令&#xf…

半導體晶圓精控:ethercat轉profient網關數據提升制造精度

數據采集系統通過網關連接離子注入機,精細控制半導體晶圓制造過程中的關鍵參數。 在半導體制造中,晶圓制造設備的精密控制是決定產品性能的關鍵因素。某半導體工廠采用耐達訊Profinet轉EtherCAT協議網關NY-PN-ECATM,將其數據采集系統與離子注…

VSCode+PlatformIO報錯 找不到頭文件

如圖示,找不到目標頭文件 demo工程運行正常,考慮在src文件夾內開辟自己的代碼,添加后沒有找到 找了些資料,大概記錄如下: 1、c_cpp_properties.json 內記錄 頭文件配置 .vscode 中,此文件是自動生成的&a…

ARM 處理器平臺 eMMC Flash 存儲磨損測試示例

By Toradex秦海 1). 簡介 目前工業嵌入式 ARM 平臺最常用的存儲器件就是 eMMC Nand Flash 存儲,而由于工業設備一般生命周期都比較長,eMMC 存儲器件的磨損壽命對于整個設備來說至關重要,因此本文就基于 NXP i.MX8M Mini ARM 處理器平臺演示…

Comfy UI 快捷鍵

Comfy UI 頁面的快捷鍵操作(記錄下,以防忘記): 捷徑命令Ctrl Enter將當前圖表排隊等待生成Ctrl Shift Enter將當前圖表排成第一個生成圖表Ctrl Z/Ctrl Y撤消/重做Ctrl S保存工作流程Ctrl O加載工作流Ctrl A選擇所有節點A…

uniapp 本地數據庫多端適配實例(根據運行環境自動選擇適配器)

項目有個需求,需要生成app和小程序,app支持離線數據庫,如果當前沒有網絡提醒用戶開啟離線模式,所以就隨便搞了下,具體的思路就是: 一個接口和多個實現類(類似后端的模板設計模式)&am…