Ga naar inhoud

API-schema's

Starlette ondersteunt generatieve API-patronen, zoals de veel gebruikte OpenAPI-specificatie. (Voorheen bekend als "Swagger".)

Schema-generatie werkt door de routes op de applicatie via app.routes te onderzoeken en documentstrings of andere eigenschappen op het eindpunt te gebruiken om het volledige API-schema te bepalen.

Starlette is niet gebonden aan een bepaalde tool voor het genereren of valideren van schema 's, maar bevat een eenvoudige implementatie die OpenAPI-schema 's genereert op basis van de documentreeks.

Starlette.applicaties importeren vanuit Starlette
Van starlette. routing importeren Route
Vanaf starlette.schemas importeren SchemaGenerator


Schema 's = SchemaGenerator (
    {"OpenAPI": "3.0.0", "info":{"title": "Example API", "version": "1.0"}}
)

Def list _ users (verzoek):
    """
    Reacties:
      200:
        Beschrijving: Een lijst van gebruikers.
        Voorbeelden:
          [{"username": "tom"}, {"username": "lucy"}]
    """
    NotImplementedError () aanmaken


Def create _ user (verzoek):
    """
    Reacties:
      200:
        Beschrijving: Een gebruiker.
        Voorbeelden:
          {"username": "tom"}
    """
    NotImplementedError () aanmaken


Def openapi _ schema (verzoek):
    Retourschema 's. OpenAPIResponse (aanvraag = aanvraag)


Routes = [
    Route ("/ users", eindpunt = list _ users, methoden = ["GET"]),
    Route ("/ users", eindpunt = create _ user, methoden = ["POST"]),
    Route ("/ schema", endpoint = openapi _ schema, inclusief _ in _ schema = False)
]

App = Starlette (routes = routes)

We hebben nu toegang tot het OpenAPI-schema op het "/ schema" -eindpunt.

U kunt .get_schema(routes) gebruiken om direct API-schema 's te genereren:

Schema = schemas.get _ schema (routes = app.routes)
Schema bevestigen = = {
    "Openapi": "3.0.0",
    "Informatie":{"title": "Example API", "version": "1.0"},
    "Paden": {
        "/ gebruikers": {
            "Krijgen": {
                "Reacties": {
                    200: {
                        "Beschrijving": "Een lijst van gebruikers".,
                        "Voorbeelden": [{"username": "tom"},{"username": "lucy"}],
                    }
                }
            },
            "plaatsen": {
                "Reacties": {
                    200: {"description": "Een gebruiker"., "voorbeelden":{"username": "tom"}}
                }
            },
        },
    },
}

Mogelijk wilt u ook het API-schema kunnen afdrukken, zodat u tools kunt gebruiken zoals het genereren van API-documentatie.

Als _ _ naam _ _ = = '_ _ hoofd _ _':
    Stel sys.argv [-1] in ("uitvoeren", "schema"), "Gebruik: example.py [uitvoeren | schema]"

    Als sys.argv [-1] = = "uitvoeren":
        uvicorn.run ("voorbeeld: app", host = '0.0.0.0', port = 8000)
    Elif sys.argv [-1] = = "schema":
        Schema = schemas.get _ schema (routes = app.routes)
        Afdrukken (yaml.dump (schema, default _ flow _ style = False))

softwarepakketten van derden

Starbodies - API Specificatie

Starlette is eenvoudig te integreren met APISpec en ondersteunt verschillende objectserialisatiebibliotheken.