Skip to main content

Python OpenApi Utilities for FastAPI

Project description

backbone-api

OpenAPI request and response models

Installation & Upgrade

pip install basalam.backbone-api

TODO List

  • Add Message Toast Field
  • Add Pagination Query Params Dependency

Usage Example

import uvicorn
from fastapi import APIRouter
from fastapi import FastAPI
from pydantic import BaseModel

from basalam.backbone_api.responses import (
    ForbiddenResponse,
    NotFoundResponse,
    UnauthorizedResponse,
    UnprocessableContentResponse,
    BulkResponse, ConflictResponse
)

app = FastAPI()


class User(BaseModel):
    id: int
    name: str


router = APIRouter(responses={
    401: {"model": UnauthorizedResponse},
    403: {"model": ForbiddenResponse},
    404: {"model": NotFoundResponse},
    409: {"model": ConflictResponse},
    422: {"model": UnprocessableContentResponse}
})


@router.get("/", response_model=BulkResponse[User])
async def root():
    ls = [
        User(id=1, name="John Doe"),
        User(id=2, name="Jane Boe")
    ]
    return BulkResponse(data=ls).as_json_response()

app.include_router(router)
if __name__=="__main__":
    uvicorn.run(app, host="localhost", port=8000)

Using Exceptions

in app.py

from fastapi import FastAPI
from basalam.backbone_api.exceptions.client_error.handlers import client_error_exception_handler
from basalam.backbone_api.exceptions.client_error import (
    ClientErrorException,
    ForbiddenException,
    UnauthorizedException,
    ConflictException,
    NotFoundException,
    UnprocessableEntityException
)

app = FastAPI()

exception_handlers = {
    ClientErrorException: client_error_exception_handler,
    ForbiddenException: client_error_exception_handler,
    UnauthorizedException: client_error_exception_handler,
    ConflictException: client_error_exception_handler,
    NotFoundException: client_error_exception_handler,
    UnprocessableEntityException: client_error_exception_handler,
}

...

If you raise any of these exceptions everywhere in you FastAPI project FastAPI will return a client error response based on the excpetion.

Example Usage

def view_or_somthing_else():
    raise ForbiddenException()

Credits

This project was inspired by the work of Mr.MohammadAli Soltanipoor on OpenAPI.

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

basalam_backbone_api-0.2.5.tar.gz (8.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

basalam_backbone_api-0.2.5-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file basalam_backbone_api-0.2.5.tar.gz.

File metadata

  • Download URL: basalam_backbone_api-0.2.5.tar.gz
  • Upload date:
  • Size: 8.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.21

File hashes

Hashes for basalam_backbone_api-0.2.5.tar.gz
Algorithm Hash digest
SHA256 6a8b5e894ae7668f79064fa1ce5d737cffa15e86769ceaa4914bc9f0f69ec0a1
MD5 1d4a04a665a3892ddaaf6e18eb8bb9a0
BLAKE2b-256 4996a8e3ce7da7f0cca17202c3dd3adc4588c76d007a6e3f64ec0480c8631df0

See more details on using hashes here.

File details

Details for the file basalam_backbone_api-0.2.5-py3-none-any.whl.

File metadata

File hashes

Hashes for basalam_backbone_api-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 edce970980e95ab86a0efa3c6a9dcad3054757dcf3643af41e353d9076c42e89
MD5 76add147d09b7d9deb0e88880e0c1b6b
BLAKE2b-256 e5c1a0d228fb6408e5c97ba4f46ac43ed54a1ef0a20679408cc18241bdf7262b

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page