Making a request to a RESTful API using python

I have a RESTful API that I have exposed using an implementation of Elasticsearch on an EC2 instance to index a corpus of content. I can query the search by running the following from my 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": {}
    }'

How do I turn above into a API request using python/requests or python/urllib2 (not sure which one to go for - have been using urllib2, but hear that requests is better...)? Do I pass as a header or otherwise?

Using requests:

    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)

Depending on what kind of response your API returns, you will then probably want to look at response.text or response.json() (or possibly inspect response.status_code first). See the quickstart docs here, especially this section.

From: stackoverflow.com/q/17301938

Back to homepage or read more recommendations: