Connexion Cookbook

This page provides recipes with Connexion as an ingredient.

CORS

You can enable CORS (Cross-origin resource sharing) by leveraging the CORSMiddleware offered by Starlette. You can add it to your application, ideally in front of the RoutingMiddleware.

from pathlib import Path

from connexion import AsyncApp
from connexion.middleware import MiddlewarePosition
from starlette.middleware.cors import CORSMiddleware


app = AsyncApp(__name__)

app.add_middleware(
    CORSMiddleware,
    position=MiddlewarePosition.BEFORE_EXCEPTION,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.add_api("openapi.yaml")

if __name__ == "__main__":
    app.run(f"{Path(__file__).stem}:app", port=8080)
View a detailed reference of the add_middleware method
AsyncApp.add_middleware(middleware_class: Type[Callable[[MutableMapping[str, Any], Callable[[], Awaitable[MutableMapping[str, Any]]], Callable[[MutableMapping[str, Any]], Awaitable[None]]], Awaitable[None]]], position: MiddlewarePosition = MiddlewarePosition.BEFORE_CONTEXT, **options: Any) None

Add a middleware to the stack on the specified position.

Parameters:
  • middleware_class – Middleware class to add

  • position – Position to add the middleware, one of the MiddlewarePosition Enum

  • options – Options to pass to the middleware_class on initialization

from pathlib import Path

from connexion import FlaskApp
from connexion.middleware import MiddlewarePosition
from starlette.middleware.cors import CORSMiddleware


app = FlaskApp(__name__)

app.add_middleware(
    CORSMiddleware,
    position=MiddlewarePosition.BEFORE_EXCEPTION,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.add_api("openapi.yaml")

if __name__ == "__main__":
    app.run(f"{Path(__file__).stem}:app", port=8080)
View a detailed reference of the add_middleware method
FlaskApp.add_middleware(middleware_class: Type[Callable[[MutableMapping[str, Any], Callable[[], Awaitable[MutableMapping[str, Any]]], Callable[[MutableMapping[str, Any]], Awaitable[None]]], Awaitable[None]]], position: MiddlewarePosition = MiddlewarePosition.BEFORE_CONTEXT, **options: Any) None

Add a middleware to the stack on the specified position.

Parameters:
  • middleware_class – Middleware class to add

  • position – Position to add the middleware, one of the MiddlewarePosition Enum

  • options – Options to pass to the middleware_class on initialization

from pathlib import Path

from asgi_framework import App
from connexion import ConnexionMiddleware
from starlette.middleware.cors import CORSMiddleware

app = App(__name__)
app = ConnexionMiddleware(app)

app.add_middleware(
    CORSMiddleware,
    position=MiddlewarePosition.BEFORE_EXCEPTION,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
)

app.add_api("openapi.yaml")

if __name__ == "__main__":
    app.run(f"{Path(__file__).stem}:app", port=8080)
View a detailed reference of the add_middleware method
ConnexionMiddleware.add_middleware(middleware_class: Type[Callable[[MutableMapping[str, Any], Callable[[], Awaitable[MutableMapping[str, Any]]], Callable[[MutableMapping[str, Any]], Awaitable[None]]], Awaitable[None]]], *, position: MiddlewarePosition = MiddlewarePosition.BEFORE_CONTEXT, **options: Any) None

Add a middleware to the stack on the specified position.

Parameters:
  • middleware_class – Middleware class to add

  • position – Position to add the middleware, one of the MiddlewarePosition Enum

  • options – Options to pass to the middleware_class on initialization