使用 python 将 json 数据放入 url
Put json data into url with python
我正在尝试在 url 中对 json 参数进行编码,以便与 mongolab restAPI 一起使用。
我的 url 看起来像这样
url = 'https://api.mongolab.com/api/1/databases/db/collections/coll?q={"q": "10024"}&apiKey=mykey
我正在尝试使用
打开它
urllib2.urlopen(url)
但是我 运行 出错说我的 api 密钥不正确。我知道这不是真的,因为如果我将 url 复制并粘贴到我的浏览器中,我会得到正确的响应。我也知道我可以访问其余的 api,只要我在那里没有查询(所以它一定是 json/formatting 问题)。
所以有谁知道我如何编码 json 查询
{"q": "10024"}
进入url?谢谢!
您必须对字符串进行正确的 URL 编码。使用 urllib.quote_plus()
function:
url = 'https://api.mongolab.com/api/1/databases/db/collections/coll?q={q}&apiKey={key}'
query = urllib.quote_plus('{"q": "10024"}')
urllib2.urlopen(url.format(q=query, key=your_api_key))
您也可以使用 requests
库。
示例:
import requests
payload = {'q': '10024', 'apiKey': 'mykey'}
r = requests.get("https://api.mongolab.com/api/1/databases/db/collections/coll", params=payload)
print(r.url)
输出:
https://api.mongolab.com/api/1/databases/db/collections/coll?q=10024&apiKey=mykey
我正在尝试在 url 中对 json 参数进行编码,以便与 mongolab restAPI 一起使用。
我的 url 看起来像这样
url = 'https://api.mongolab.com/api/1/databases/db/collections/coll?q={"q": "10024"}&apiKey=mykey
我正在尝试使用
打开它urllib2.urlopen(url)
但是我 运行 出错说我的 api 密钥不正确。我知道这不是真的,因为如果我将 url 复制并粘贴到我的浏览器中,我会得到正确的响应。我也知道我可以访问其余的 api,只要我在那里没有查询(所以它一定是 json/formatting 问题)。
所以有谁知道我如何编码 json 查询
{"q": "10024"}
进入url?谢谢!
您必须对字符串进行正确的 URL 编码。使用 urllib.quote_plus()
function:
url = 'https://api.mongolab.com/api/1/databases/db/collections/coll?q={q}&apiKey={key}'
query = urllib.quote_plus('{"q": "10024"}')
urllib2.urlopen(url.format(q=query, key=your_api_key))
您也可以使用 requests
库。
示例:
import requests
payload = {'q': '10024', 'apiKey': 'mykey'}
r = requests.get("https://api.mongolab.com/api/1/databases/db/collections/coll", params=payload)
print(r.url)
输出:
https://api.mongolab.com/api/1/databases/db/collections/coll?q=10024&apiKey=mykey