У меня есть RESTful API, который я раскрыл, используя реализацию Elasticsearch на экземпляре EC2 для индексации совокупности содержимого. Я могу запросить поиск, запустив следующее из моего терминала (MacOSX):
curl -XGET 'http://ES_search_demo.com/document/record/_search?pretty=true' -d '{
"query": {
"bool": {
"must": [
{
"text": {
"record.document": "SOME_JOURNAL"
}
},
{
"text": {
"record.articleTitle": "farmers"
}
}
],
"must_not": [],
"should": []
}
},
"from": 0,
"size": 50,
"sort": [],
"facets": {}
}'
Как превратить вышеуказанное в запрос API с помощью python/requests
или python/urllib2
(не уверен, какой из них использовать - использовал urllib2, но слышал, что запросы лучше ...)? Я передаю в качестве заголовка или иначе?
python
api
rest
elasticsearch
user7289
источник
источник
Использование запросов и JSON делает это просто.
json.loads
функциюМодуль запросов предоставляет вам полезную функцию для цикла для успеха и неудачи.
if(Response.ok)
: поможет вам определить, успешен ли ваш вызов API (код ответа - 200)Response.raise_for_status()
поможет вам получить код http, который возвращается из API.Ниже приведен пример кода для выполнения таких вызовов API. Также можно найти в github . Код предполагает, что API использует дайджест-аутентификацию. Вы можете пропустить это или использовать другие соответствующие модули аутентификации для аутентификации клиента, вызывающего API.
источник
jData[key]
jData
, а неjData[key]
print(json.dumps(jData, indent=4, sort_keys=True))
Таким образом, вы хотите передать данные в теле запроса GET, лучше сделать это в вызове POST. Вы можете достичь этого, используя оба запроса.
Необработанный запрос
Пример звонка с запросами
источник
Ниже приведена программа для выполнения остальных API в Python-
источник