httprest
is a minimalistic framework for communicating with REST APIs.
Its goal is to reduce a boilerplate code required to communicate with APIs.
- It has the
http
package exposing an HTTP client interface. There is also a client implementation that usesurllib
under the hood. So no need to use extra libraries likerequests
- It has the
api.API
class which may be overridden and used to make API calls
from httprest import API
class MyAPI(API):
def operation(self):
result = self._request("POST", "/operation/endpoint", json={...})
if result.ok:
print(result.json)
api = MyAPI("https://api.com")
api.operation()
pip install httprest
The library exposes an HTTPClient
interface and provides two implementations for it:
http.urllib_client.UrllibHTTPClient
: the default implementation, uses theurllib
library under the hoodhttp.requests_client.RequestsHTTPClient
: uses therequests
library under the hood
from httprest.http import HTTPClient, HTTPResponse
class MyHTTPClient(HTTPClient):
def _request(...) -> HTTPResponse
And then you simply use it in the API client:
api = MyAPI(..., http_client=MyHTTPClient())
The library provides the http.fake_client
module containing FakeHTTPClient
class.
That class may be used for API testing. Example:
from httprest.http.fake_client import FakeHTTPClient, HTTPResponse
http_client = FakeHTTPClient(responses=[HTTPResponse(200, b"", headers={})])
api = MyAPI(..., http_client=http_client)
api.operation()
# assert your expectations here
assert http_client.history == [...]