Pythonを使用してRESTful APIにリクエストを送信する 質問する

Pythonを使用してRESTful APIにリクエストを送信する 質問する

コンテンツのコーパスをインデックスするために、EC2 インスタンスで Elasticsearch の実装を使用して公開した RESTful API があります。ターミナル (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/requestspython/urllib2(どちらを選択すればよいかわかりません - urllib2 を使用してきましたが、requests の方が優れていると聞きました...)? ヘッダーとして渡すのですか、それとも他の方法で渡すのですか?

ベストアンサー1

リクエストの使用:

import requests
url = 'http://ES_search_demo.com/document/record/_search?pretty=true'
data = '''{
  "query": {
    "bool": {
      "must": [
        {
          "text": {
            "record.document": "SOME_JOURNAL"
          }
        },
        {
          "text": {
            "record.articleTitle": "farmers"
          }
        }
      ],
      "must_not": [],
      "should": []
    }
  },
  "from": 0,
  "size": 50,
  "sort": [],
  "facets": {}
}'''
response = requests.post(url, data=data)

API が返す応答の種類に応じて、response.textまたはを確認する必要がありますresponse.json()(または、最初に検査する必要があります)。ここ のresponse.status_codeクイックスタート ドキュメント、特にこのセクション を参照してください。

おすすめ記事