一个简单的python http服务器,在响应中响应请求

httpd-echo的Python项目详细描述


一个简单的python http服务器,在响应中回显请求

提供一个简单的http服务器,尝试在 以最合理的方式回应。这对测试很有用, 调试,在具有硬编码的系统中截取本地服务器 提出http请求等的假设:

$ python -m httpdecho
Echoing HTTP at http://localhost:8000 ...

示例

如果不指定端口,服务器将尝试查找下一个可用端口 从8000开始,尽量做到可预测:

>>> import sys
>>> import time
>>> import subprocess
>>> from six.moves import SimpleHTTPServer
>>> startup_delay = 0.5
>>> simple_popen = subprocess.Popen(
...     [sys.executable, '-m', SimpleHTTPServer.__name__]
...     ); time.sleep(1)
>>> echo_popen = subprocess.Popen(
...     [sys.executable, '-m', 'httpdecho']
...     ); time.sleep(1)
>>> echo_popen.poll()
>>> simple_popen.kill()

一旦运行,http请求就会在响应中得到响应。默认响应 正文格式基本上是http头格式,从 http.client.HTTPMessage

>>> import io
>>> import requests
>>> import email
>>> get_response = requests.delete('http://localhost:8001')
>>> get_body = email.message_from_string(get_response.text)
>>> print(get_body['Method'])
DELETE
>>> print(get_body['Path'])
/
>>> print(get_body.get_payload())
<BLANKLINE>

还包括查询参数:

>>> query_response = requests.get(
...     'http://localhost:8001', params=dict(Foo='foo'))
>>> query_body = email.message_from_string(query_response.text)
>>> print(query_body['Foo'])
foo

如果请求是POST或接受 请求、正文或响应正文将包含post正文:

>>> post_response = requests.patch(
...     'http://localhost:8001', data=dict(Bar='bar'))
>>> post_body = email.message_from_string(post_response.text)
>>> print(post_body.get_payload())
Bar=bar

关闭服务器:

>>> echo_popen.kill()

待办事项

未来版本的功能

Content-TypeAccept支持内容协商:

Return the response body in the format specified in the ^{tt4}$ header if given, otherwise in the same ^{tt3}$ as the request.

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java数组列表故障   Lambda表达式中方法引用的java方法引用   java上载文件并将其内容附加到现有文本文件   java JUnit:如何在非活动测试用例上获取上下文?   java将可比较对象的较低和较大实例提取到专用变量中   java如何将按钮活动链接到另一个Textview活动   错误:java。lang.SecurityExceptionsigner信息与同一包中其他类的签名者信息不匹配   java Geotools库突然从存储库中消失   java如何编写正则表达式来删除字符串中的所有字母字符   java反应式springdatasolr存储库   使用java将一个Zip的内容插入另一个Zip   在公式标记中创建别名时发生java错误   java异常\访问\冲突(0xc0000005)javaCV   Wicket中多文件上传的java FileNotFoundException   java从由“|”分隔的txt文件中获取特定值