☄️ 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
Metadata
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 | Provenance | |
|---|---|---|---|---|
| fastapi_responseschema-2.1.0.tar.gz | 11.0 kB | Without provenance | 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
|
Security for fastapi-responseschema 2.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.