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
httppackage exposing an HTTP client interface. There is also a client implementation that usesurllibunder the hood. So no need to use extra libraries likerequests - It has the
api.APIclass 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("http://api.com")
api.operation()pip install httprestThe library exposes an HTTPClient interface and provides two implementations for it:
http.urllib_client.UrllibHTTPClient: the default implementation, uses theurlliblibrary under the hoodhttp.requests_client.RequestsHTTPClient: uses therequestslibrary under the hood
from httprest.http import HTTPClient, HTTPResponse
class MyHTTPClient(HTTPClient):
def _request(...) -> HTTPResponseAnd 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 == [...]