ata*_*lor 35 python http basehttpserver
来自BaseHTTPServer模块的BaseHTTPHandler似乎没有提供任何方便的方式来访问http请求参数.解析路径中的GET参数和请求体中的POST参数的最佳方法是什么?
现在,我正在使用它进行GET:
def do_GET(self):
parsed_path = urlparse.urlparse(self.path)
try:
params = dict([p.split('=') for p in parsed_path[4].split('&')])
except:
params = {}
Run Code Online (Sandbox Code Playgroud)
这适用于大多数情况,但我想要一些更健壮的东西来正确处理编码和空参数等情况.理想情况下,我想要一些小而独立的东西,而不是一个完整的Web框架.
zag*_*zag 85
您可能想要使用urllib.parse:
>>> from urllib.parse import urlparse, parse_qs
>>> url = 'http://example.com/?foo=bar&one=1'
>>> parse_qs(urlparse(url).query)
{'foo': ['bar'], 'one': ['1']}
Run Code Online (Sandbox Code Playgroud)
对于Python 2,模块命名urlparse而不是url.parse.
Mik*_*ike 12
更好地解决旧问题:
def do_POST(self):
length = int(self.headers.getheader('content-length'))
field_data = self.rfile.read(length)
fields = urlparse.parse_qs(field_data)
Run Code Online (Sandbox Code Playgroud)
这将从文档内容中提取urlencoded的POST数据,并使用正确的urldecoding将其解析为dict
| 归档时间: |
|
| 查看次数: |
55451 次 |
| 最近记录: |