Skip to main content

HTTP REST client, simplified for Python

Project description

Travis Badge Code Climate Coverage Status PyPi Versionse

Quickly and easily access any REST or REST-like API.

Here is a quick example:

GET /your/api/{param}/call

import python_http_client
global_headers = {"Authorization": "Basic XXXXXXX"}
client = Client(host='base_url', request_headers=global_headers)
client.your.api._(param).call.get()
print response.status_code
print response.response_headers
print response.response_body

POST /your/api/{param}/call with headers, query parameters and a request body with versioning.

import python_http_client
global_headers = {"Authorization": "Basic XXXXXXX"}
client = Client(host='base_url', request_headers=global_headers)
query_params={"hello":0, "world":1}
request_headers={"X-Test": "test"}
data={"some": 1, "awesome", 2, "data", 3}
response = client.your.api._(param).call.post(request_body=data,
                                              query_params=query_params,
                                              request_headers=request_headers)
print response.status_code
print response.response_headers
print response.response_body

Installation

pip install python_http_client

or

easy_install python_http_client

Usage

Following is an example using SendGrid. You can get your free account here.

First, update your .env with your SENDGRID_API_KEY and HOST. For this example HOST=https://api.sendgrid.com.

Following is an abridged example, here is the full working code.

import os
import json
import python_http_client
path_to_env = os.path.abspath(os.path.dirname(__file__))
python_http_client.Config(path_to_env)
host = os.environ.get('HOST')
api_key = os.environ.get('SENDGRID_API_KEY')
request_headers = {"Authorization": 'Bearer {0}'.format(api_key), "Content-Type": "application/json"}
version = 3 # note that we could also do client.version(3) to set the version for each endpoint
client = python_http_client.Client(host=host,
                                   request_headers=request_headers,
                                   version=version)

# GET collection
response = client.api_keys.get()

# POST
data = {
    "name": "My API Key",
    "scopes": [
        "mail.send",
        "alerts.create",
        "alerts.read"
    ]
}

response = client.api_keys.post(request_body=data)
json_response = json.loads(response.response_body)
api_key_id = json_response['api_key_id']

# GET single
response = client.api_keys._(api_key_id).get()

# PATCH
data = {
    "name": "A New Hope"
}
response = client.api_keys._(api_key_id).patch(request_body=data)

# PUT
data = {
    "name": "A New Hope",
    "scopes": [
        "user.profile.read",
        "user.profile.update"
    ]
}
response = client.api_keys._(api_key_id).put(request_body=data)

# DELETE
response = client.api_keys._(api_key_id).delete()

Announcements

[2016.02.25] - We hit version 1!

Roadmap

Milestones

How to Contribute

We encourage contribution to our libraries, please see our CONTRIBUTING guide for details.

Thanks

We were inspired by the work done on birdy and universalclient.

About

[SendGrid Logo] (https://assets3.sendgrid.com/mkt/assets/logos_brands/small/sglogo_2015_blue-9c87423c2ff2ff393ebce1ab3bd018a4.png)

python-http-client is guided and supported by the SendGrid Developer Experience Team.

python-http-client is maintained and funded by SendGrid, Inc. The names and logos for python-http-client are trademarks of SendGrid, Inc.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

python_http_client-1.2.4.tar.gz (5.7 kB view details)

Uploaded Source

Built Distribution

python_http_client-1.2.4-py2-none-any.whl (8.6 kB view details)

Uploaded Python 2

File details

Details for the file python_http_client-1.2.4.tar.gz.

File metadata

File hashes

Hashes for python_http_client-1.2.4.tar.gz
Algorithm Hash digest
SHA256 99f47c173d85769390c13f9fc712046ed1de7686e33466da6ad7687f707ebcae
MD5 e45e38912c784c9050e0e5699ac3a232
BLAKE2b-256 fc7f38ed0e29a4c2ef0fba00bf48266e7e08bc28ed91f852a70ab37a19d59915

See more details on using hashes here.

File details

Details for the file python_http_client-1.2.4-py2-none-any.whl.

File metadata

File hashes

Hashes for python_http_client-1.2.4-py2-none-any.whl
Algorithm Hash digest
SHA256 11b60d3e479df89b841eb3f865bfca4c8beebef5a62150a4c394ca509dfb084b
MD5 8f83b4664588491684b66e10aca47bb1
BLAKE2b-256 324c9efb45300100f993b111e69b30b07906aa21ebd9e8a2fc0d8398e0ee44ae

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page