【问题标题】:Pass a dictionary inside the initial API request in python在 python 的初始 API 请求中传递字典
【发布时间】:2019-08-13 18:23:11
【问题描述】:

实现此 API 请求的最佳方式是什么。

在请求期间,我想指定'first'、'last'和'organization'。

我面临的问题是 '?person=' 之后的 URL 中的字典,它在终端中返回一个错误,告诉我只使用一个字符串。

请在下面找到 api 请求:

url = "http://api.foo.com/search/?person={%"names":[{"first":"foo","last":"foo"}],"jobs":[{"organization":"foo"}]}&key=foo"

下面是api的结构。

Person : 
     -first
     -last
Jobs: - organization

任何帮助将不胜感激。

【问题讨论】:

  • 尝试使用json.dumps() 将您的dict 转换为字符串,然后再将其传递到url。我想这样就可以了。

标签: python python-3.x api url python-requests


【解决方案1】:

我希望你做得很好,

我认为最好的方法是使用库 urllib

例如:

import urllib
mydict  = {"person":{"names":[{"first":"foo","last":"foo"}],"jobs":[{"organization":"foo"}]}}
url = "http://api.foo.com/search/?person={}&key=foo".format(urllib.urlencode(mydict))

最终值将如下所示:

http://api.foo.com/search/?person=%7B%27jobs%27%3A+%5B%7B%27organization%27%3A+%27foo%27%7D%5D%2C+%27names%27%3A+%5B%7B%27last%27%3A+%27foo%27%2C+%27first%27%3A+%27foo%27%7D%5D%7D&key=foo

当您查看请求时会如下所示:

如果你使用:

import urlparse
urlparse.parse_qs('http://api.foo.com/search/?person=%7B%27jobs%27%3A+%5B%7B%27organization%27%3A+%27foo%27%7D%5D%2C+%27names%27%3A+%5B%7B%27last%27%3A+%27foo%27%2C+%27first%27%3A+%27foo%27%7D%5D%7D&key=foo')

#{'http://api.foo.com/search/?person': ["{'jobs': [{'organization': 'foo'}], 'names': [{'last': 'foo', 'first': 'foo'}]}"],
#'key': ['foo']}

祝你有美好的一天,

我最好的问候。

G

【讨论】:

    猜你喜欢
    • 2021-12-29
    • 2020-09-04
    • 2022-12-09
    • 1970-01-01
    • 2016-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 2020-07-12
    相关资源
    最近更新 更多