48 lines
1.3 KiB
Python
48 lines
1.3 KiB
Python
"""
|
|
Application entry point for an OpenAPI-first FastAPI service.
|
|
|
|
This module constructs a FastAPI application exclusively from an
|
|
OpenAPI specification and a handler namespace, without using
|
|
decorator-driven routing.
|
|
|
|
All HTTP routes, methods, and operation bindings are defined in the
|
|
OpenAPI document referenced by ``openapi_path``. Python callables
|
|
defined in the ``routes`` module are bound to OpenAPI operations
|
|
strictly via ``operationId``.
|
|
|
|
This module contains no routing logic, request handling, or framework
|
|
configuration beyond application assembly.
|
|
|
|
Design guarantees:
|
|
- OpenAPI is the single source of truth
|
|
- No undocumented routes can exist
|
|
- Every OpenAPI operationId must resolve to exactly one handler
|
|
- All contract violations fail at application startup
|
|
|
|
This file is intended to be used as the ASGI entry point.
|
|
|
|
Example:
|
|
uvicorn main:app
|
|
"""
|
|
|
|
|
|
from openapi_first.app import OpenAPIFirstApp
|
|
from starlette_csrf import CSRFMiddleware
|
|
import routes
|
|
|
|
app = OpenAPIFirstApp(
|
|
openapi_path="openapi.yaml",
|
|
routes_module=routes,
|
|
title="Health Check Service",
|
|
)
|
|
|
|
app.add_middleware(
|
|
CSRFMiddleware,
|
|
secret="change-me-in-production",
|
|
cookie_name="csrftoken",
|
|
header_name="x-csrftoken",
|
|
cookie_secure=False,
|
|
cookie_httponly=False,
|
|
cookie_samesite="lax",
|
|
)
|