☄️ FastAPI Response Schema
Overview
This package extends the FastAPI response model schema allowing you to have a common response wrapper via a fastapi.routing.APIRoute.
This library supports Python versions >=3.8 and FastAPI versions >=0.89.1.
Getting started
Install the package
pip install fastapi-responseschema
If you are planning to use the pagination integration, you can install the package including fastapi-pagination
pip install fastapi-responseschema[pagination]
Usage
from typing import Generic, TypeVar, Any, Optional, List
from pydantic import BaseModel
from fastapi import FastAPI
from fastapi_responseschema import AbstractResponseSchema, SchemaAPIRoute, wrap_app_responses
# Build your "Response Schema"
class ResponseMetadata(BaseModel):
error: bool
message: Optional[str]
T = TypeVar("T")
class ResponseSchema(AbstractResponseSchema[T], Generic[T]):
data: T
meta: ResponseMetadata
@classmethod
def from_exception(cls, reason, status_code, message: str = "Error", **others):
return cls(
data=reason,
meta=ResponseMetadata(error=status_code >= 400, message=message)
)
@classmethod
def from_api_route(
cls, content: Any, status_code: int, description: Optional[str] = None, **others
):
return cls(
data=content,
meta=ResponseMetadata(error=status_code >= 400, message=description)
)
# Create an APIRoute
class Route(SchemaAPIRoute):
response_schema = ResponseSchema
# Integrate in FastAPI app
app = FastAPI()
wrap_app_responses(app, Route)
class Item(BaseModel):
id: int
name: str
@app.get("/items", response_model=List[Item], description="This is a route")
def get_operation():
return [Item(id=1, name="ciao"), Item(id=2, name="hola"), Item(id=3, name="hello")]
Te result of GET /items:
HTTP/1.1 200 OK
content-length: 131
content-type: application/json
{
"data": [
{
"id": 1,
"name": "ciao"
},
{
"id": 2,
"name": "hola"
},
{
"id": 3,
"name": "hello"
}
],
"meta": {
"error": false,
"message": "This is a route"
}
}
Docs
You can find detailed info for this package in the Documentation.
Contributing
Contributions are very welcome!
How to contribute
Just open an issue or submit a pull request on GitHub.
While submitting a pull request describe what changes have been made.
More info on Docs section
Contributors Wall
Release files for fastapi-responseschema 2.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| fastapi_responseschema-2.1.0.tar.gz | 11.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| fastapi_responseschema-2.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 23.9 kB
Release files / fastapi_responseschema-2.1.0.tar.gz
| Download URL | fastapi_responseschema-2.1.0.tar.gz |
|---|---|
| Size | 11.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
2948e20509235bdfed24788cdbce65be62a3af8aa4f1a0d459c4fddb78eb717f
|
|
BLAKE2b-256 checksum How to use checksums |
6dda749ac5be7149427b59c3e0c3ae1c25ebae3b7514bd585dc3085f4499d770
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.8.18 Linux/6.2.0-1018-azure
|
Release files / fastapi_responseschema-2.1.0-py3-none-any.whl
| Download URL | fastapi_responseschema-2.1.0-py3-none-any.whl |
|---|---|
| Size | 12.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
dbb96f838b83323d11faababa3dc17ce760701f5d2ac6c25632935b09e65507a
|
|
BLAKE2b-256 checksum How to use checksums |
07eeab8ca40cd4b6c7c776135c8f7fdc145a7df459a86a596aafc31cb1d6d2d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.7.1 CPython/3.8.18 Linux/6.2.0-1018-azure
|