用Python简单实现Http服务端

 更新时间:2023年07月21日 11:35:13   作者:BEARZPY  
这篇文章主要为大家介绍了使用Python简单实现Http服务端示例解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Python 实现 Http 服务端

Android 开发中常常有很多使用 Http 进行交互的时候,有时候想测试一些 API 功能可能需要后台的配合,但是往往需要双方都有空的时候才行,效率不高。测试 API 的时候,有些简单功能不妨用 Python 自己写一个 Http Service 来实现。

实现一个简单的服务器

Python 内置了一个简单的服务器,使用命令行命令就可以启动一个 Http Service,默认可以作为文件服务器,以当前操作的文件夹为目录,显示该文件夹下的内容,如果当前文件夹有 index.html 文件,则会默认显示该文件。端口是可选的,不填会采用缺省端口 8000,在浏览器中访问地址 http://localhost:8000,就能看到文件服务器。

Python2 命令

python -m SimpleHTTPServer 8080

Python3 命令

python -m http.server 8080

自定义 API 服务器

简单的文件服务器有时候不能满足我们的需求,我们需要测试一些 API 接口,这个时候我们可以使用 Python 编写一个处理 API 的服务器。

  • HTTPServer 可以让我们为服务器指定一个本机地址和端口,同时配置使用我们的自定义 http 处理类
  • BaseHTTPRequestHandler 继承此类后,我们可以自定义 do_GET(),do_POST() 等方法处理客户端 url 请求
  • 对 url 的路径和参数进行分离,进行对应的业务逻辑处理
  • send_response() 设置 Http 返回码,会自动设置 Message
  • send_header() 设置 Http 头信息,以 end_headers() 确认头信息完成
  • wfile.write() 写入 Http body 数据,文件使用 ‘rb’ 读取后写入,String 正常写入

注: 调用 end_headers() 之后,再调用 send_header() 等操作会把数据写入 body 中。

以下为示例程序,python3 版本:

import time
import getHandler
from http.server import BaseHTTPRequestHandler, HTTPServer
HOST = '192.168.137.1'
PORT_NUMBER = 8080
class TestHttpHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        // 业务逻辑处理
        ret_code, ret_byte = getHandler.handler(self.path)
        // 设置相应码
        self.send_response(ret_code)
        if ret_byte is None:
            // 无 body
            // 确认头信息
            self.end_headers()
            return
        // 设置返回长度
        self.send_header('Content-Length', len(ret_byte))
        // 确认头信息
        self.end_headers()
        // 写入 body 数据
        self.wfile.write(ret_byte)
    def do_POST(self):
        self.send_response(400)
        self.end_headers()
    def do_PUT(self):
        self.send_response(400)
        self.end_headers()
    def do_DELETE(self):
        self.send_response(400)
        self.end_headers()
def start_server():
    http_server = HTTPServer((HOST, PORT_NUMBER), TestHttpHandler)
    print(time.asctime(), "Server Starts - %s:%s" % (HOST, PORT_NUMBER))
    try:
        http_server.serve_forever()
    except KeyboardInterrupt:
        pass
    http_server.server_close()
    print(time.asctime(), "Server Stops - %s:%s" % (HOST, PORT_NUMBER))
if __name__ == "__main__":
    start_server()

以上就是用Python简单实现Http服务端的详细内容,更多关于Python Http服务端的资料请关注脚本之家其它相关文章!

相关文章

  • python基础之字典

    python基础之字典

    这篇文章主要介绍了python的字典,实例分析了Python中返回一个返回值与多个返回值的方法,需要的朋友可以参考下
    2021-10-10
  • Django 实现Admin自动填充当前用户的示例代码

    Django 实现Admin自动填充当前用户的示例代码

    今天小编就为大家分享一篇Django 实现Admin自动填充当前用户的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python处理数据之匹配两个Excel文件数据的实现方法

    Python处理数据之匹配两个Excel文件数据的实现方法

    这篇文章主要给大家介绍了关于Python处理数据之匹配两个Excel文件数据的实现方法,可以使用Python的Pandas库来实现两层循环匹配两个Excel文件,需要的朋友可以参考下
    2023-09-09
  • 如何基于python实现年会抽奖工具

    如何基于python实现年会抽奖工具

    这篇文章主要介绍了如何基于python实现年会抽奖工具,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-10-10
  • 基于Python开发的高质量PDF转Word批量处理系统

    基于Python开发的高质量PDF转Word批量处理系统

    在日常的学习和开发中,我们经常遇到需要将大量 PDF 转换为 Word 文档的场景,因此,我抽时间将这个高频需求重构为一个基于 Python 开发的高质量 PDF 转 Word 批量处理系统,这不仅仅是一个自动化脚本,更是一个践行 SOLID 原则和设计模式,需要的朋友可以参考下
    2026-05-05
  • Pycharm如何运行.py文件的方法步骤

    Pycharm如何运行.py文件的方法步骤

    这篇文章主要介绍了Pycharm如何运行.py文件的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-03-03
  • Python内置函数input()示例详解

    Python内置函数input()示例详解

    input()函数是Python中用于获取用户输入的一个简单而强大的工具,它在创建需要用户交互的程序时非常有用,这篇文章主要介绍了Python内置函数input()详解,需要的朋友可以参考下
    2024-04-04
  • 解决keras+flask模型的重复调用出错ValueError: Tensor is not an element of this graph

    解决keras+flask模型的重复调用出错ValueError: Tensor is n

    这篇文章主要介绍了解决keras+flask模型的重复调用出错ValueError: Tensor is not an element of this graph问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-01-01
  • Python实现求一个集合所有子集的示例

    Python实现求一个集合所有子集的示例

    今天小编就为大家分享一篇Python 实现求一个集合所有子集的示例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-05-05
  • Python+turtle绘制七夕表白玫瑰花

    Python+turtle绘制七夕表白玫瑰花

    七夕节,又称“七巧节”“女儿节”“乞巧节”等,是中国民间的传统节日。一年一度的七夕又快到了,用Python画一朵玫瑰花送给你的那个TA吧
    2022-08-08

最新评论