SimpleRestAPI is the library for launch REST API based on your SQLAlchemy models.
Documentation: https://simplerestapi.readthedocs.io/en/latest/
Features
- Minimum code. You don't need create any endpoints. All of you need is your SQLAlchemy models.
- You can customize your endpoints. For example, you can deny some methods or customize the endpoint's path.
- Under hood SimpleApi use Starlette.
Installation
pip install simplerestapi
Also you need install uvicorn.
pip install uvicorn
Usage
- Create
models.py
from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.ext.declarative import declarative_base
from simplerestapi.endpoint import ConstructEndpoint, Endpoint
Base = declarative_base(metaclass=ConstructEndpoint)
class CustomUser(Base, Endpoint):
id = Column(Integer, primary_key=True)
name = Column(String)
surname = Column(String)
age = Column(Integer)
class Car(Base, Endpoint):
id = Column(Integer, primary_key=True)
name_model = Column(String)
production = Column(String)
year = Column(Integer)
You need to add metaclass=ConstructEndpoint
to parameters declarative_base
and to inherit your table class from Endpoint
.
You don't need to add attribute __tablename__
to your table class, because the name of the table is constructed automatic like cls.__name__.lower()
.
You can add class ConfigEndpoint
to config your endpoint, for more information see Configuration endpoint .
- Create
app.py
import os
import uvicorn
import models
from simplerestapi.main import SimpleApi
app = SimpleApi(models, db='postgresql://db_user:[email protected]/db_name')
You can use the parameter debug=False
to turn off debug mode.
- Run application
uvicorn app:app.app --reload
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [250901] using statreload
INFO: Started server process [250903]
INFO: Waiting for application startup.
INFO: Application startup complete.
- Use REST API
You can use methods GET, POST, PUT, PATCH, DELETE in endpoints:
- http://127.0.0.1:8000/car - GET for retrieve list of
models.Car
items, support filters, example?name=SomeName
, POST for create new item in DB. - http://127.0.0.1:8000/car/1 - GET for retrieve one item with id=1, also you can use PUT, PATCH for update item, DELETE for delete item from DB.
Similar endpoints are availible for all you models.