如何解析通过POST接收到的URL编码数据 [英] How to parse URL encoded data recieved via POST

查看:179
本文介绍了如何解析通过POST接收到的URL编码数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在为服务编写django网络挂钩,该服务通过 POST 发送的URL已编码。示例 POST 显示如下:

I'm writing a django webhook for a service that send data via POST that is URL encoded. Example POST show below:

POST id=a5f3ca18-2935-11e7-ad46-08002720e7b4
 &originator=1123456789
 &recipient=1987654321
 &subject=MMS+reply
 &body=View+our+logo
 &mediaUrls[0]=https://storage.googleapis.com/mms-assets/20170424/a0b40b77-30f8-4603-adf1-00be9321885b-messagebird.png
 &mediaContentTypes[0]=image/png
 &createdDatetime=2017-04-24T20:15:30+00:00

我了解如何解析 json ,但我之前从未遇到过这种格式。关于如何通过 POST 处理此问题,似乎没有任何有用的教程。我被困在这一点上,因此将不胜感激。

I understand how to parse json but I haven't encountered this format before. There doesn't appear to be any useful tutorials for how to handle this via POST. I'm stuck at this point so help would be greatly appreciated.

推荐答案

Python 2:

>>> from urlparse import parse_qs
>>> parse_qs('foo=spam&bar=answer&bar=42')
{'foo': ['spam'], 'bar': ['answer', '42']}

Python 3:

>>> from urllib.parse import parse_qs
>>> parse_qs('foo=spam&bar=answer&bar=42')
{'foo': ['spam'], 'bar': ['answer', '42']}

两个python 2/3:

Both python 2/3:

>>> from six.moves.urllib.parse import parse_qs

UPD

还有 parse_qsl 函数,它返回两个项目元组的列表,例如

There is also parse_qsl function that returns a list of two-items tuples, like

>>> parse_qsl('foo=spam&bar=answer&bar=42')
[('foo', 'spam'), ('bar', 'answer'), ('bar', '42')]

非常适合将此类列表传递给 dict()构造函数,意味着您得到的dict每个名称只有一个值。请注意,姓/值对优先于同名的早期出现(请参阅 dict (在库参考中)。

It is very suitable to passing such list to dict() constructor, meaning that you got a dict with only one value per name. Note that the last name/value pair takes precedence over early occurrences of same name (see dict in library reference).

这篇关于如何解析通过POST接收到的URL编码数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆