Tengo una API RESTful que he expuesto utilizando una implementación de Elasticsearch en una instancia EC2 para indexar un corpus de contenido. Puedo consultar la búsqueda ejecutando lo siguiente desde mi terminal (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": {}
}'
¿Cómo me convierto en una solicitud de API usando python/requests
o python/urllib2
(no estoy seguro de cuál elegir, he estado usando urllib2, pero escucho que las solicitudes son mejores ...)? ¿Paso como encabezado o de otra manera?
python
api
rest
elasticsearch
usuario7289
fuente
fuente
Usar peticiones y json lo hace simple.
json.loads
funciónEl módulo de solicitudes le proporciona una función útil para bucle para el éxito y el fracaso.
if(Response.ok)
: le ayudará a determinar si su llamada API es exitosa (Código de respuesta - 200)Response.raise_for_status()
le ayudará a recuperar el código http que devuelve la API.A continuación se muestra un código de muestra para realizar tales llamadas API. También se puede encontrar en github . El código supone que la API hace uso de la autenticación de resumen. Puede omitir esto o utilizar otros módulos de autenticación apropiados para autenticar al cliente que invoca la API.
fuente
jData[key]
jData
, nojData[key]
print(json.dumps(jData, indent=4, sort_keys=True))
Por lo tanto, si desea pasar datos en el cuerpo de una solicitud GET, lo mejor sería hacerlo en una llamada POST. Puede lograr esto utilizando ambas solicitudes.
Solicitud sin procesar
Llamada de muestra con solicitudes
fuente
A continuación se muestra el programa para ejecutar la API de resto en python-
fuente