콘텐츠로 이동

API 스키마

Starlette는 널리 사용되는 OpenAPI 사양과 같은 생성 API 패턴을 지원합니다. (이전에는 "Swagger"로 알려져 있습니다.)

스키마 생성은 app.routes 를 통해 응용 프로그램의 경로를 검사하고 엔드포인트의 문서 문자열 또는 기타 속성을 사용하여 전체 API 스키마를 결정하는 방식으로 작동합니다.

Starlette는 특정 스키마 생성 또는 유효성 검사 도구에 연결되어 있지 않지만 문서 문자열을 기반으로 OpenAPI 스키마를 생성하는 간단한 구현을 포함합니다.

Starlette. 응용 프로그램이 Starlette에서 가져옵니다.
별자리에서. 라우팅 가져오기 경로
Starlette.as에서 스키마 생성기를 가져옵니다.


스키마 = 스키마 생성기(
    {"OpenAPI": "3.0.0", "정보":{"title": "Example API", "version": "1.0"}}
)

Def list _ 사용자(요청):
    """
    응답:
      200:
        설명: 사용자 목록입니다.
        예:
          [{"username": "tom"}, {"username": "lucy"}]
    """
    NotImplemented오류 올리기()


Def create_user(요청):
    """
    응답:
      200:
        설명: 사용자.
        예:
          {"username": "tom"}
    """
    NotImplemented오류 올리기()


Def openapi_schema(요청):
    스키마를 반환합니다. OpenAPI 응답(요청 = 요청)


경로 = [
    경로("/", endpoint = list_, = ["GET"]),
    경로("/", endpoint = create_user, = ["POST"]),
    경로("/schema", endpoint=openapi_schema, _in_schema=거짓)
]

앱=스타렛(루트=루트)

이제 "/schema" 엔드포인트에서 OpenAPI 스키마에 액세스할 수 있습니다.

.get_schema(routes) 를 사용하여 API 스키마를 직접 생성할 수 있습니다.

스키마 = as.get_schema ( = app.)
주장 스키마=={
    "Openapi": "3.0.0,"
    "정보":{"title": "Example API", "version": "1.0"},
    "경로": {
        "/사용자": {
            "겟": {
                "응답": {
                    200: {
                        "설명": "사용자 목록.",
                        "예": [{"username": "tom"},{"username": "lucy"}],
                    }
                }
            },
            "포스트": {
                "응답": {
                    200: {"설명": "사용자", "예":{"username": "tom"}}
                }
            },
        },
    },
}

API 문서 생성과 같은 도구를 사용할 수 있도록 API 스키마를 인쇄할 수도 있습니다.

만약 __name __= '__main __':
    ("run", "schema"), "사용: example.py[run|schema]"에서 sys.argv[-1]을 주장합니다.

    sys.argv[-1]== "실행"인 경우:
        uvicorn.run("예: 앱", 호스트 = '0.0.0.0', 포트 = 8000)
    엘리프 sys.argv [-1] == "스키마":
        스키마 = as.get_schema ( = app.)
        인쇄 (yaml.dump (스키마, defaul_flow 스타일 = 거짓))

타사 소프트웨어 패키지

스타바디 - API 사양

Starlette는 APISpec과 통합하기 쉽고 여러 개체 직렬화 라이브러리를 지원합니다.