The easiest way to create your Restful CRUD APIs
Project description
CrudAPI: The easiest way to create your CRUD APIs
Combining the power of FastAPI and SQLModel, you'll only have to care about modeling your data and we'll take care of building up a RESTful API for it.
from typing import Optional
from sqlmodel import Field
from sqlmodel import SQLModel
from crudapi import CrudAPI
from crudapi.models import BaseModel
class BookUpdate(SQLModel, table=False):
description: Optional[str] = Field(nullable=True)
review: Optional[str] = Field(nullable=True)
class BookCreate(BookUpdate):
title: str = Field(nullable=False)
class Book(BookCreate, BaseModel, table=True):
__tablename__ = "books"
crud = CrudAPI()
crud.include_model(
orm_model=Book,
create_model=BookCreate,
update_model=BookUpdate,
)
you'll get, out of the box, a working crudapi with all these working REST endpoints:
- GET: /books
- POST: /books
- GET: /books/<id>
- PATCH: /books/<id>
- PUT: /books/<id>
- DELETE: /books/<id>
and because CrudAPI subclasses FastAPI you'll also get all the incredible features of this wonderful library, including automatic OpenAPI schema generation and a working SwaggerUI:
Samples
Under the /samples directory you'll find some CrudAPIs to help you understand the included features of this library.
Pay special attention to the definitions on samples/models.py and how they relate to the automagically generated OpenAPI specification and APIs.
We've also commited the .vscode/launch.json configuration file. With it, if you are a VSCode user you'll be able to launch some test & debugging servers.
Development
We use Poetry for packaging and dependency management:
poetry install
poetry shell
We use Pytest for testing:
pytest
You can start a testing server running:
uvicorn tests.server:app --reload
Acknowledgments
This wouldn't be possible without the great people working in the following open source projects. Eternal thanks to all of them.
- SQLAlchemy "The database toolkit for python."
- Starlette "The little ASGI framework that shines."
- pydantic "Data validation and settings management using Python type hinting."
- FastAPI "FastAPI framework, high performance, easy to learn, fast to code, ready for production."
- SQLModel "SQLModel, SQL databases in Python, designed for simplicity, compatibility, and robustness."
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
Built Distribution
File details
Details for the file crudapi-0.4.0.tar.gz
.
File metadata
- Download URL: crudapi-0.4.0.tar.gz
- Upload date:
- Size: 9.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.7 Linux/5.11.0-1020-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | f008cd250cf47f4bf20acacc00fc4d1b577f51a3380b598e02d1f17449a96963 |
|
MD5 | d7525c5f77f4c8810aaa42d49c0539ab |
|
BLAKE2b-256 | 2d2f8003a4322ab67c35be18d9e6f7074e8e4c91c2d08aefdcfff54362d3b180 |
File details
Details for the file crudapi-0.4.0-py3-none-any.whl
.
File metadata
- Download URL: crudapi-0.4.0-py3-none-any.whl
- Upload date:
- Size: 12.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.1.4 CPython/3.9.7 Linux/5.11.0-1020-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 38a5a8b7e148946d8a46fbfbf3f04334ecf43f61042ddc518fd2c16cee23d706 |
|
MD5 | d694c04bc005c716679bda7fb11f61d2 |
|
BLAKE2b-256 | 85924a03e689e31a063c5c970160b7ce3c5f6928c1188a9e0e9a49174c169492 |