Skip to main content

The simplest way to have a rest api

Project description

Lint Build and Test Upload Package PyPI version

py-easy-rest

It is a lib to create fast and scalable rest apis based on JSON schema in a very simple way. It is based on Sanic and it has built in extensions to add repositories and caches.

Getting Started

How to install

pip install py-easy-rest

Coding your app

It will use by default an in memory repository. It is not recommended to production applications. The next sections of this documentation will show you ways to integrate your application with Mongo DB and ways to use cache strategies. You can also create your own repositories and cache strategies to integrate your app with other technologies.

PYRSanicAppBuilder.build returns a Sanic App, so you can use it to extend and build new things in your app.

#main.py
from sanic_ext import Extend
from py_easy_rest import PYRSanicAppBuilder
from py_easy_rest.service import PYRService


config = {
    "name": "ProjectName",
    "schemas": [{
        "name": "Mock",
        "slug": "mock",
        "properties": {
            "name": {"type": "string"},
            "age": {"type": "integer"},
        },
        "required": ["name"],
    }]
}

service = PYRService(config)
sanic_app = PYRSanicAppBuilder.build(config, service)

Extend(sanic_app)

sanic_app.run(
    host='0.0.0.0',
    port=8000,
    debug=True,
)

Running it

python main.py

Now you can access http://localhost:8000/docs to access your api documentation.

Integrating with Repositories

It is possible to add a repository to your application persist data into some data base. By default it will use a in memory repository, witch is not recommended to production environment.

To create your own repository, you just need to follow the Repo signature and pass it to the App:

service = PYRService(api_config_mock, repo=MyOwnRepo())

Repos ready to use

Integrating with Cache Strategies

It is possible to add a cache to your application. By default it will not use a cache, but you can choice a built in option or create your own cache.

To create your own cache, you just need to follow the Cache signature and pass it to the App:

service = PYRService(api_config_mock, cache=MyOwnCache())

Caches ready to use

API Description

py_easy_rest.PYRSanicAppBuilder.build()

Properties Required Default Description
api_config True None Object with project and schemas config
service True PYRService() Service use to handle the operations

py_easy_rest.services.PYRService()

Properties Required Default Description
api_config True None Object with project and schemas config
repo False PYRMemoryRepo() Repository used as data resource
cache False PYRDummyCache() Cache strategy
cache_list_seconds_ttl False 10 TTL to cache the list results in seconds
cache_get_seconds_ttl False 60 * 30 TTL to cache the get results

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

py-easy-rest-0.4.7.tar.gz (10.6 kB view details)

Uploaded Source

Built Distribution

py_easy_rest-0.4.7-py3-none-any.whl (7.8 kB view details)

Uploaded Python 3

File details

Details for the file py-easy-rest-0.4.7.tar.gz.

File metadata

  • Download URL: py-easy-rest-0.4.7.tar.gz
  • Upload date:
  • Size: 10.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.1 CPython/3.9.13

File hashes

Hashes for py-easy-rest-0.4.7.tar.gz
Algorithm Hash digest
SHA256 2900acd0b7e3f3f9777adeef63ec0d17fe781a8ac3981614402a30af22090b7e
MD5 b4a90caa4ecaf753a62cf2a94a83201f
BLAKE2b-256 d4cd68cab0500f07cec9516e421b6f6ab660bee125f237298204c2e457c31289

See more details on using hashes here.

File details

Details for the file py_easy_rest-0.4.7-py3-none-any.whl.

File metadata

File hashes

Hashes for py_easy_rest-0.4.7-py3-none-any.whl
Algorithm Hash digest
SHA256 4a3427175f940aba83f9aafc9e87a3779db69ec07a6d039f73a6ff145b2e460b
MD5 0910684f20d5b24be99ef832c0b5c50c
BLAKE2b-256 89b92189543e04f4aa667b478f9b35960de431946e36cc72ec5e2c20a7a1886d

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