Saya memiliki API TENANG yang telah saya paparkan menggunakan implementasi Elasticsearch pada contoh EC2 untuk mengindeks kumpulan konten. Saya dapat meminta pencarian dengan menjalankan yang berikut dari terminal saya (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": {}
}'
Bagaimana cara mengubah di atas menjadi permintaan API menggunakan python/requests
atau python/urllib2
(tidak yakin mana yang harus dituju - telah menggunakan urllib2, tetapi mendengar bahwa permintaan lebih baik ...)? Apakah saya lulus sebagai tajuk atau tidak?
sumber
Menggunakan permintaan dan json membuatnya mudah.
json.loads
fungsi menggunakan PythonModul Permintaan memberi Anda fungsi yang berguna untuk mengulang kesuksesan dan kegagalan.
if(Response.ok)
: akan membantu Anda menentukan apakah panggilan API Anda berhasil (Kode respons - 200)Response.raise_for_status()
akan membantu Anda mengambil kode http yang dikembalikan dari API.Di bawah ini adalah contoh kode untuk melakukan panggilan API semacam itu. Juga dapat ditemukan di github . Kode mengasumsikan bahwa API menggunakan otentikasi intisari. Anda dapat melewati ini atau menggunakan modul otentikasi lain yang sesuai untuk mengotentikasi klien yang memohon API.
sumber
jData[key]
jData
, bukanjData[key]
print(json.dumps(jData, indent=4, sort_keys=True))
Jadi, Anda ingin meneruskan data di badan permintaan GET, lebih baik melakukannya di panggilan POST. Anda dapat mencapai ini dengan menggunakan kedua Permintaan.
Permintaan Mentah
Contoh panggilan dengan Permintaan
sumber
Di bawah ini adalah program untuk menjalankan api sisanya di python-
sumber