Я создаю "API API", это - в основном обертка для в доме веб-сервис REST, к которому веб-приложение будет выполнять много запросов. Некоторые вызовы веб-сервиса должны быть, ПОЛУЧАЮТ, а не отправляют, но передающие параметры.
Существует ли "лучшая практика" способ закодировать словарь в строку запроса? например: ?foo=bar&bla=blah
Я смотрю на urllib2 документы, и похоже, что это решает отдельно, использовать ли POST или ДОБРАТЬСЯ на основе того, если Вы передаете параметрические усилители или нет, но возможно кто-то знает, как заставить его преобразовать словарь параметрических усилителей в ПОЛУЧИТЬ запрос.
Возможно, существует пакет для чего-то вроде этого там? Было бы замечательно, если бы это поддерживало активный, поскольку веб-сервер будет постоянно запрашивать вещи от остальных сервис.
Идеально что-то, что также преобразовало бы XML в некоторый проходимый объект Python.
Спасибо!
И да, разделение труда urllib
/ urllib2
немного запутанно в Python 2.x.
Разве urllib.urlencode () недостаточно?
>>> import urllib
>>> urllib.urlencode({'foo': 'bar', 'bla': 'blah'})
foo=bar&bla=blah
РЕДАКТИРОВАТЬ:
Вы также можете обновить существующий URL:
>>> import urlparse, urlencode
>>> url_dict = urlparse.parse_qs('a=b&c=d')
>>> url_dict
{'a': ['b'], 'c': ['d']}
>>> url_dict['a'].append('x')
>>> url_dict
{'a': ['b', 'x'], 'c': ['d']}
>>> urllib.urlencode(url_dict, True)
'a=b&a=x&c=d'
Обратите внимание, что функция parse_qs
была в пакет cgi
до Python 2.6
РЕДАКТИРОВАТЬ 23/04/2012:
Вы также можете взглянуть на python-requests - в конечном итоге он должен убить urllib:)