Skip to main content

FastAPI Custom Responses

Project description

FastAPI Custom Responses

Provides normalized response objects and error handling.

Example

from http import HTTPStatus
from fastapi_custom_responses import EXCEPTION_HANDLERS, ErrorResponse, ErrorResponseModel, Response, SuccessResponse
from fastapi import APIRouter, FastAPI, Request

# Initialize FastAPI
router = APIRouter()

app = FastAPI(
    title="API",
    description="My API",
    version="1.0.0",
    exception_handlers=EXCEPTION_HANDLERS, # Use error handler from library
)

# Define data model
class Data(Response):
    example: str

# Routes
@router.get(
    "/",
    response_model=Response[Data],
    responses={
        400: {"model": ErrorResponseModel, "description": "Bad request"},
        500: {"model": ErrorResponseModel, "description": "Internal server error"},
    },
)
async def index(_: Request) -> Response[Data]:
    """Index route."""

    return Response(
        success=True,
        data=Data(example="hello"),
    )

@router.get(
    "/return-error",
    response_model=Response[Data],
    responses={
        HTTPStatus.FORBIDDEN: {
            "description": "User belongs to a different organization",
            "model": ErrorResponseModel,
            "content": {
                "application/json": {
                    "example": {
                        "success": False,
                        "error": "User belongs to a different organization",
                    },
                },
            },
        },
    },
)
async def error_route(_: Request) -> Response:
    """Error route."""

    raise ErrorResponse(error="Your request is invalid.", status_code=HTTPStatus.BAD_REQUEST)

Note: When using OpenAPI generators, use SuccessResponse instead of Response if your endpoint has no data to return.

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

fastapi_custom_responses-0.0.15.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

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

fastapi_custom_responses-0.0.15-py3-none-any.whl (6.4 kB view details)

Uploaded Python 3

File details

Details for the file fastapi_custom_responses-0.0.15.tar.gz.

File metadata

File hashes

Hashes for fastapi_custom_responses-0.0.15.tar.gz
Algorithm Hash digest
SHA256 f61ff9abc47d52356f61cd65f9565192332a989a5c7ce1c2c8d3a0c76992ac8e
MD5 e85f02d20f8027d7854b9900b45e1f43
BLAKE2b-256 a8a5e05a3cac02645b1211b0fa42450f80f9846b2679c84331e78850fbd62262

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastapi_custom_responses-0.0.15.tar.gz:

Publisher: publish-to-pypi.yml on julien777z/fastapi-custom-responses

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file fastapi_custom_responses-0.0.15-py3-none-any.whl.

File metadata

File hashes

Hashes for fastapi_custom_responses-0.0.15-py3-none-any.whl
Algorithm Hash digest
SHA256 5693770713ffe7f2fa337daab0e84ce86b5c5a05729fb33eb671bbf2676887e4
MD5 45899b29e8f003e6c561da37614eb549
BLAKE2b-256 370123652f946051730be48cab5ce4fced3f20df766c47faea3f674025ab430d

See more details on using hashes here.

Provenance

The following attestation bundles were made for fastapi_custom_responses-0.0.15-py3-none-any.whl:

Publisher: publish-to-pypi.yml on julien777z/fastapi-custom-responses

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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