반응형
FastAPI를 사용하여 쿼리 매개 변수의 목록 필드를 사용하도록 Swagger UI를 설정하는 방법은 무엇입니까?
목록 필드에서 종속성 주입을 사용하는 앱을 만들 때 매개 변수는 자동으로 Swagger의 요청 본문으로 이동합니다UI:
from fastapi import FastAPI, Query, Depends
import uvicorn
from pydantic import BaseModel, Field
from typing import List
class QueryParams(BaseModel):
name: str = Field(...)
ages: List[int] = Field([])
app = FastAPI()
@app.get("/test")
def test(query: QueryParams = Depends()):
return "hi"
uvicorn.run(app)
즉, 스웨거 UI에서 테스트할 수 없습니다. 필드를 쿼리로 변경해도 작동하지 않습니다:
from fastapi import FastAPI, Query, Depends
import uvicorn
from pydantic import BaseModel, Field
from typing import List
class QueryParams(BaseModel):
name: str = Field(...)
ages: List[int] = Query([]) # <-- Query
app = FastAPI()
@app.get("/test")
def test(query: QueryParams = Depends()):
return "hi"
uvicorn.run(app)
경로 함수에 넣으면 다음과 같이 작동합니다:
from fastapi import FastAPI, Query, Depends
import uvicorn
from pydantic import BaseModel, Field
from typing import List
class QueryParams(BaseModel):
name: str = Field(...)
app = FastAPI()
@app.get("/test")
def test(query: QueryParams = Depends(), ages: List[int] = Query([])):
return "hi"
uvicorn.run(app)
종속성 주입을 사용하여 기본 모델에서 목록 쿼리 필드를 인식하도록 스웨거 UI를 어떻게 할 수 있습니까?
에서 설명한 바와 같이 Pydantic 모델 내의 필드를 사용할 수 없으며 매개 변수가 될 것으로 예상할 수 없습니다. 이 방법은 아래와 같이 쿼리 매개 변수 구문 분석을 별도로 구현하는 것입니다:
class QueryParams:
def __init__(
self,
name: str,
ages: List[int] = Query(...)
):
self.name = name
self.ages = ages
@app.get("/test")
def test(query: QueryParams = Depends()):
return "hi"
위의 내용은 아래와 같이 데코레이터를 사용하여 다시 작성할 수 있습니다:
from dataclasses import dataclass
@dataclass
class QueryParams:
name: str
ages: List[int] = Query(...)
@app.get("/test")
def test(query: QueryParams = Depends()):
return "hi"
갱신하다
Pydantic 모델 내에서 필드를 쿼리 매개 변수로 정의할 수 있는 in을 래핑할 수 있습니다. 실제 예제는 에서 확인할 수 있습니다.
반응형
'개발하자' 카테고리의 다른 글
프리즘 유형 스크립트 안에 조항이 포함되어 있습니까? (0) | 2023.09.02 |
---|---|
형식 스크립트, 자동으로 모든 약속 반환 기능 호출 대기 (0) | 2023.09.02 |
테라폼 리소스에 사용되기 전에 파일에 값을 삽입하는 것이 가능합니까? (0) | 2023.09.01 |
테라폼: 수정이 감지된 경우에만 태그를 업데이트하는 방법 (0) | 2023.08.31 |
유형 스크립트 오류 JSX 요소 유형 '보기'가 JSX 요소에 대한 생성자 함수가 아닙니다 (0) | 2023.08.30 |