Skip to main content

RestyClient is a simple, easy-to-use Python library for interacting with REST APIs using Pydantic's powerful data validation and deserialization tools.

Project description

Resty-Client

resty lib logo

GitHub GitHub release (latest by date) PyPI - Downloads Code Style Coverage

Resty-Client is a simple, easy-to-use Python library for interacting with REST APIs using Pydantic's powerful data validation and deserialization tools. This library provides an intuitive API that makes it easy to make HTTP requests and handle data on the client side.

Features

  • Middleware system, which allows you to implement any pagination, filtering or authentication.
  • Powerful data validation & deserialization using Pydantic
  • Easy-to-Use

Installation

Using pip:

pip install resty-client

Using Poetry:

poetry add resty-client

Getting-Started

See examples for more.

Schemas

from resty.types import Schema


class UserCreateSchema(Schema):
    username: str
    email: str
    password: str
    age: int


class UserReadSchema(Schema):
    id: int
    username: str
    email: str
    age: int


class UserUpdateSchema(Schema):
    username: str = None
    email: str = None

Manager

from resty.managers import Manager
from resty.enums import Endpoint, Field


class UserManager(Manager):
    endpoints = {
        Endpoint.CREATE: "users/",
        Endpoint.READ: "users/",
        Endpoint.READ_ONE: "users/{pk}",
        Endpoint.UPDATE: "users/{pk}",
        Endpoint.DELETE: "users/{pk}",
    }
    fields = {
        Field.PRIMARY: "id",
    }

CRUD

import asyncio

import httpx

from resty.clients.httpx import RESTClient


async def main():
    client = RESTClient(httpx.AsyncClient(base_url="https://localhost:8000"))

    manager = UserManager(client=client)

    response = await manager.create(
        obj=UserCreateSchema(
            username="admin",
            email="admin@admin.com",
            password="admin",
            age=19,
        ),
        response_type=UserReadSchema,
    )
    print(response)  # id=1 username='admin' email='admin@admin.com' age=19

    response = await manager.read(
        response_type=UserReadSchema,
    )

    for obj in response:
        print(obj)  # id=1 username='admin' email='admin@admin.com' age=19

    response = await manager.read_one(
        obj_or_pk=1,
        response_type=UserReadSchema,
    )

    print(response)  # id=1 username='admin' email='admin@admin.com' age=19

    response = await manager.update(
        obj=UserUpdateSchema(
            id=1,
            username="admin123",
        ),
        response_type=UserReadSchema,
    )

    print(response)  # id=1 username='admin123' email='admin@admin.com' age=19

    await manager.delete(
        obj_or_pk=1,
        expected_status=204,
    )



if __name__ == "__main__":
    asyncio.run(main())

Status

0.0.5 - RELEASED

Licence

Resty-Client is released under the MIT License. See the bundled LICENSE file for details.

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

resty_client-0.0.6.tar.gz (10.8 kB view details)

Uploaded Source

Built Distribution

resty_client-0.0.6-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file resty_client-0.0.6.tar.gz.

File metadata

  • Download URL: resty_client-0.0.6.tar.gz
  • Upload date:
  • Size: 10.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.1 Windows/10

File hashes

Hashes for resty_client-0.0.6.tar.gz
Algorithm Hash digest
SHA256 a5bc8a40f54bcf6a338f276245152249bfcb601f9c2bfc8da79c82a73796d404
MD5 9fa45d4cf2f6a260b227a3f7e92be895
BLAKE2b-256 a6b95d959bfdb3542abaa05b03a842b34376f53a9581e2aab439e1b0c7a8e95a

See more details on using hashes here.

File details

Details for the file resty_client-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: resty_client-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 15.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.2 CPython/3.12.1 Windows/10

File hashes

Hashes for resty_client-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 73a0437e5a5139244c23572300143847d2148f99a2ebb3e38e8e65db28729726
MD5 8a20836990ffe7482b2b3a8b6d263da8
BLAKE2b-256 b90fa524e491a02db3865c88e8cd461841df82e47738e862f5c2539bf17ca91e

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