用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 Concurrent Futures解锁并行化编程的魔法示例
Python的concurrent.futures模块为并行化编程提供了强大的工具,使得开发者能够轻松地利用多核心和异步执行的能力,本文将深入探讨concurrent.futures的各个方面,从基础概念到高级用法,为读者提供全面的了解和实用的示例代码2023-12-12Python Multiprocessing多进程 使用tqdm显示进度条的实现
这篇文章主要介绍了Python Multiprocessing多进程 使用tqdm显示进度条的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下2019-08-08解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
今天小编就为大家分享一篇解决pyinstaller打包发布后的exe文件打开控制台闪退的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2019-06-06
最新评论