Ich habe eine RESTful-API, die ich mithilfe einer Implementierung von Elasticsearch auf einer EC2-Instanz verfügbar gemacht habe, um einen Inhaltskorpus zu indizieren. Ich kann die Suche abfragen, indem ich Folgendes von meinem Terminal (MacOSX) aus ausführe:
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": {}
}'
Wie verwandle ich mich oben in eine API-Anfrage mit python/requests
oder python/urllib2
(nicht sicher, für welche ich mich entscheiden soll - habe urllib2 verwendet, aber höre, dass Anfragen besser sind ...)? Übergebe ich als Header oder auf andere Weise?
quelle
Die Verwendung von Anfragen und JSON macht es einfach.
json.loads
Funktion in ein Python-DiktatDas Anforderungsmodul bietet Ihnen nützliche Funktionen zum Schleifen für Erfolg und Misserfolg.
if(Response.ok)
: hilft Ihnen festzustellen, ob Ihr API-Aufruf erfolgreich ist (Antwortcode - 200)Response.raise_for_status()
hilft Ihnen beim Abrufen des von der API zurückgegebenen http-Codes.Unten finden Sie einen Beispielcode für solche API-Aufrufe. Kann auch in Github gefunden werden . Der Code setzt voraus, dass die API die Digest-Authentifizierung verwendet. Sie können dies entweder überspringen oder andere geeignete Authentifizierungsmodule verwenden, um den Client zu authentifizieren, der die API aufruft.
quelle
jData[key]
jData
nicht seinjData[key]
print(json.dumps(jData, indent=4, sort_keys=True))
Wenn Sie also Daten im Hauptteil einer GET-Anforderung übergeben möchten, ist es besser, dies im POST-Aufruf zu tun. Sie können dies erreichen, indem Sie beide Anforderungen verwenden.
Rohe Anfrage
Beispielanruf mit Anfragen
quelle
Unten finden Sie das Programm zum Ausführen der restlichen API in Python-
quelle