Observed since 20 Oct, 17:40 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
Abstract Base Class for writing Requests based Rest Api Clients
This project is a starting template for quickly implementing a python REST api client. A concrete base class encapsulating the popular requests library is provided. Abstract base class building blocks for integrating other http libraries (such as aiohttp, etc.) are also available. The main advantage to using this base class as a starting point is to save on common boilerplate actions, which are highlighted below.
pip install abstract-http-client
from abstract_http_client.http_clients.requests_client import RequestsClient
import json
class JsonPlaceholderApiClient(RequestsClient):
def __init__(self, host):
super().__init__(host=host, use_https=True)
def get_users(self):
return self.rest_service.request_get(uri="/users").json()
def get_posts(self):
return self.rest_service.request_get("/posts").json()
def add_post(self):
return self.rest_service.request_post("/posts", data={"post": "my_post"})
if __name__ == "__main__":
api = JsonPlaceholderApiClient(host="jsonplaceholder.typicode.com")
users = api.get_users()
print(json.dumps(users[:2], indent=4))
print(f"total requests sent {api.rest_service.request_counter}")
from abstract_http_client.http_clients.requests_client import RequestsClient
class SampleAuthClient(RequestsClient):
def __init__(self, host, user, password):
super().__init__(host=host, user=user, password=password)
self.login()
def login(self):
""" sample login - getting token and storing on requests session object """
data = {"user": self.user, "password": self.password}
self.token = self.rest_service.request_put(uri="/login", json=data)
self.rest_service.session.headers.update({"Authorization": self.token})
def logout(self):
""" sample logout - invalidating token and clearing session auth header """
self.rest_service.request_delete(uri=f"/logout/{self.token}")
self.rest_service.session.headers.pop({"Authorization": self.token})
def get_stuff(self) -> dict:
""" NOTE: this is pseudocode, not real endpoint """
return self.rest_service.request_get("/stuff").json()
if __name__ == "__main__":
# Context manager will handle api logout
with SampleAuthClient(host="192.168.1.3", user="admin", password="admin") as api:
# call your api here
stuff = api.get_stuff()
# Do more stuff
Download counts and popularity will appear here as the collector receives them.
| Version | Published | Direct dependencies | Open version |
|---|---|---|---|
| 1.0.3 | 29 Dec 2021 | 1 |
This describes our collected data; it is not a security assessment.
Shared repository data · GitHub
Observed since 20 Oct, 17:40 UTC
No superseded metadata states collected. Unchanged observations do not create new revisions.
package:cd2dd1cfb69f85d1be4d702e585329e00c3afe714bd029e105a5ae005f070371