Передайте словарь внутри первоначального запроса API в python - PullRequest
0 голосов
/ 22 марта 2019

Как лучше всего выполнить запрос этого API.

Во время запроса я хочу указать 'first', 'last' и 'organization'.

проблема, с которой я сталкиваюсь - это словарь внутри URL после '? person =', который возвращает ошибку в терминале, говорящую мне использовать только строку.

Пожалуйста, найдите запрос API ниже:

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

Ниже приведена структура API.

Person : 
     -first
     -last
Jobs: - organization

Любая помощь будет высоко ценится.

1 Ответ

1 голос
/ 22 марта 2019

Надеюсь, у тебя все хорошо,

Я считаю, что лучше всего использовать библиотеку 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

Что при взгляде на запрос будет выглядеть так:

enter image description here

Если вы используете:

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

...