This module should not be considered as stable as it is still under development.
However a stable version can be expected by mid March 2020 and any issue or pull request is welcome at any time.
Provides a plugin to use with APISpec to be able to handle Starlette endpoints.
from starlette.applications import Starlette
from apispec import APISpec
from apispec_starlette import StarlettePlugin
app = Starlette()
spec = APISpec(
title="My API",
version="0.0.1",
openapi_version="2.0",
plugins=[StarlettePlugin(app)],
)
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from apispec import APISpec
from apispec_starlette import StarlettePlugin
app = Starlette()
spec = APISpec(
title="My API",
version="0.0.1",
openapi_version="2.0",
plugins=[StarlettePlugin(app)],
)
@app.route("/my_endpoint")
def my_endpoint(request):
"""
responses:
200:
description: "Action performed"
schema:
properties:
status:
type: string
type: object
"""
return JSONResponse({"status": "test"})
from starlette.applications import Starlette
from starlette.responses import JSONResponse
from apispec import APISpec
from apispec_starlette import StarlettePlugin, document_response
app = Starlette()
spec = APISpec(
title="My API",
version="0.0.1",
openapi_version="2.0",
plugins=[StarlettePlugin(app)],
)
@app.route("/my_endpoint")
def my_endpoint(request):
return JSONResponse({"status": "test"})
document_response(spec, endpoint="/my_endpoint", method="get", status_code=200, response={
"description": "Action performed",
"schema": {
"properties": {"status": {"type": "string"}},
"type": "object",
}
})
from starlette.applications import Starlette
from starlette.middleware import Middleware
from starlette.middleware.authentication import AuthenticationMiddleware
from starlette.authentication import requires, AuthenticationBackend
from starlette.responses import JSONResponse
from apispec import APISpec
from apispec_starlette import StarlettePlugin, document_endpoint_oauth2_authentication, document_oauth2_authentication
# TODO Replace by your OAuth2 backend
app = Starlette(middleware=[Middleware(AuthenticationMiddleware, backend=AuthenticationBackend())])
spec = APISpec(
title="My API",
version="0.0.1",
openapi_version="2.0",
plugins=[StarlettePlugin(app)],
)
# TODO Adjust parameters
document_oauth2_authentication(spec, authorization_url="http://authorization_url", flow="implicit", scopes={"scope1": "Description of scope 1", "scope2": "Description of scope 2"})
@app.route("/my_endpoint")
@requires(scopes=["scope1", "scope2"])
def my_endpoint(request):
return JSONResponse({"status": "test"})
document_endpoint_oauth2_authentication(spec, endpoint="/my_endpoint", method="get", required_scopes=["scope1", "scope2"])
Your endpoints can be automatically discovered and documented when requesting /swagger.json
from starlette.applications import Starlette
from apispec_starlette import add_swagger_json_endpoint
app = Starlette()
spec = add_swagger_json_endpoint(app=app)
- python 3.6+ must be installed
- Use pip to install module:
python -m pip install apispec_starlette