41. Metadata and Docs URLs
1. Metadata and Docs URLs
- FastAPI 애플리케이션에서 여러 메타데이터 구성을 사용자 지정할 수 있다.
2. Title, description, and version
- 다음과 같은 것을 설정할 수 있다.
1] Title
- OpenAPI 및 자동 API 문서 UI에서 API의 제목/이름으로 사용된다.
2] Description
- OpenAPI 및 자동 API 문서 UI의 API에 대한 설명이다.
3] Version
- API 버전이다.
- 이를 설정하려면 다음과 같이
title
,description
,version
매개변수를 사용하면 된다.
from fastapi import FastAPI
app = FastAPI(
title="My Super Project",
description="This is a very fancy project, with auto docs for the API and everything",
version="2.5.0",
)
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]
- 위의 예제와 같이 구성하면, 자동 API 문서에서 다음과 같이 표시된다.
3. Metadata for tags
- 매개변수
openapi_tags
를 사용하여 path operation을 그룹화하는 데 사용되는 다양한 태그에 대한 추가 메타데이터를 추가할 수 있다. - 각 태그에 대해 하나의
dict
타입을 포함하는list
가 필요하다. - 각
dict
는 다음과 같은 것을 포함할 수 있다.
1] name
(required)
- path operation 및
APIRouters
의 매개변수tags
에서 사용하는 것과 동일한 태그 이름을 가진str
타입
2] description
- 태그에 대한 간단한 설명이 있는
str
타입 - Markdown이 있을 수 있으며 문서 UI에 표시된다.
3] externalDocs
- 외부 문서를 설명하는 사전
description
,url
(required)
1) Create metadata for tags
users
와items
에 대한 태그를 사용해 보자.
- 다음과 같이 태그에 대한 메타데이터를 생성하고 이를 매개변수
openapi_tags
에 전달한다.
from fastapi import FastAPI
tags_metadata = [
{
"name": "users",
"description": "Operations with users. The login logic is also here.",
},
{
"name": "items",
"description": "Manage items. So _fancy_ they have their own docs.",
"externalDocs": {
"description": "Items external docs",
"url": "https://fastapi.tiangolo.com/",
},
},
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async def get_users():
return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async def get_items():
return [{"name": "wand"}, {"name": "flying broom"}]
- 설명 내에서 Markdown을 사용할 수 있다.
2) Use your tags
- path operations와 함께 매개변수
tags
를 사용하여 다른 태그에 할당한다.
from fastapi import FastAPI
tags_metadata = [
{
"name": "users",
"description": "Operations with users. The login logic is also here.",
},
{
"name": "items",
"description": "Manage items. So _fancy_ they have their own docs.",
"externalDocs": {
"description": "Items external docs",
"url": "https://fastapi.tiangolo.com/",
},
},
]
app = FastAPI(openapi_tags=tags_metadata)
@app.get("/users/", tags=["users"])
async def get_users():
return [{"name": "Harry"}, {"name": "Ron"}]
@app.get("/items/", tags=["items"])
async def get_items():
return [{"name": "wand"}, {"name": "flying broom"}]
3) Check the docs
- 문서를 확인하면 다음과 같이 모든 추가 메타데이터가 표시된다.
4) Order of tags
- 각 태그 메타데이터
dict
의 순서는 문서 UI에 표시되는 순서도 정의한다. - 예를 들어
users
가 사전순으로items
를 찾아보더라도list
의 첫 번째dict
로 메타데이터를 추가했기 때문에items
가 앞에 표시된다.
4. OpenAPI URL
- 기본적으로 OpenAPI 스키마는
/openapi.json
에서 제공된다. - 하지만 매개변수
openapi_url
을 사용하여 구성할 수 있다.
- 다음과 같이
/api/v1/openapi.json
에서 제공되도록 설정할 수 있다.
from fastapi import FastAPI
app = FastAPI(openapi_url="/api/v1/openapi.json")
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]
- OpenAPI 스키마를 완전히 비활성화하려면,
openapi_url=None
으로 설정하면 된다.
5. Docs URLs
- 다음과 같은 두 가지 설명서 사용자 인터페이스를 구성할 수 있다.
1] Swagger UI
/docs
에서 제공된다.- 매개변수
docs_url
을 사용하여 URL을 설정할 수 있다. docs_url=None
을 설정하여 비활성화할 수 있다.
2] ReDoc
/redoc
에서 제공된다.- 매개변수
redoc_url
을 사용하여 URL을 설정할 수 있다. redoc_url=None
을 설정하여 비활성화할 수 있다.
- 다음과 같이 Swagger UI가
/documentation
에서 제공되도록 설정하고, ReDoc을 비활성화할 수 있다.
from fastapi import FastAPI
app = FastAPI(docs_url="/documentation", redoc_url=None)
@app.get("/items/")
async def read_items():
return [{"name": "Foo"}]