FastAPI

FrameWork/Fastapi

[Fastapi] Header 매개 변수

헤더 매개변수를 Query, Path, Cookie 매개변수들과 같은 방식으로 정의 할 수 있다. from typing import Union from fastapi import FastAPI, Header app = FastAPI() @app.get("/items/") async def read_items(user_agent: Union[str, None] = Header(default=None)): return {"User-Agent": user_agent} Header는 다른 Path, Query, Cookie가 제공하는 기능 외에 자동 변환이라는 것을 제공하고 있는데 헤더에 담긴 데이터 이름들은 모두 하이픈(-)으로 되어 있는데 파이썬은 유효하게 보지 않는다. 따라서 매개변수 이름을 _ 언더스코어..

FrameWork/Fastapi

[Fastapi] 쿠키 매개변수

Query 매개 변수를 정의하는 것과 동일한 방식으로 쿠키 매개변수를 정의하고 사용 할 수 있다. Cookie는 fastapi 패키지에서 가져와 사용한다. from typing import Annotated from fastapi import Cookie, FastAPI app = FastAPI() @app.get("/items/") async def read_items(ads_id: Annotated[str | None, Cookie()] = None): return {"ads_id": ads_id}

FrameWork/Fastapi

[Fastapi] Body Fields을 통한 유효성 검증, 중첩 모델

지금까지 경로매개변수는 Path, 쿼리매개변수는 Query 을 통해 유효성을 검증하였다. 요청 본문의 body parameter 같은 경우에는 pydantic에 있는 Field을 통해 유효성을 검증 할 수 있다. from typing import Annotated from fastapi import Body, FastAPI from pydantic import BaseModel, Field app = FastAPI() class Item(BaseModel): """ Field을 통해서 유효성 검증 시도 """ name: str description: str | None = Field( default=None, title="The description of the item", max_length=300 )..

FrameWork/Fastapi

[Fastapi] Body Multiple Parameters

일반적으로 요청 본문을 처리하는 방법은 pydantic에 BaseModel을 이용하여 처리한다. 요청 받는 부분을 class화 하여 함수의 매개변수로 넘겨주게 된다면 fastapi 에서는 이를 body parameters 라고 판단하고 처리한다. from fastapi import FastAPI from pydantic import BaseModel app = FastAPI() class Item(BaseModel): name: str description: str | None = None price: float tax: float | None = None class User(BaseModel): username: str full_name: str | None = None @app.put("/items/..

FrameWork/Fastapi

[Fastapi] 경로 매개 변수에서의 유효성 검증

경로 매개 변수에서의 유효성 검증 경로 매개 변수에서 유효성을 검증하려고 한다면 Path을 이용하여 처리 할 수 있다. Path는 fastapi 패키지에 있기 때문에 import 해서 사용한다. from typing import Union from fastapi import FastAPI, Path, Query app = FastAPI() @app.get("/items/{item_id}") async def read_items( item_id: int = Path(title="The ID of the item to get"), q: Union[str, None] = Query(default=None, alias="item-query"), ): results = {"item_id": item_id} if ..

FrameWork/Fastapi

[Fastapi] 유효성 검사, 필수 매개변수, 쿼리 매개변수 목록/다중 값 처리

Fastapi 에서의 매개변수에 대한 유효성 검사 Fastapi을 사용한다면, 매개 변수에 대한 추가 정보 및 유효성 검사를 선언 할 수 있다. from typing import Union을 통해서 처리할 필요없이 | 이걸로 처리 하면 된다. 하지만 공식 문서에서는 | 처리보다는 Union[str, None] 처럼 명시적으로 처리하는 것을 더 추천하고 있다. from fastapi import FastAPI app = FastAPI() @app.get("/items/") async def read_items(q: str | None = None): results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} if q: results.update({"q":..

FrameWork/Fastapi

[Fastapi] 요청 본문

요청 본문 간단하게 Request Body, Reponse Body의 내용을 정리하면 다음과 같다. Request Body - 요청 본문은 클라이언트가 API로 보낸 데이터를 의미한다. Response Body - 응답 본문은 API가 클라이언트에게 보내는 데이터를 의미한다. Fastapi 에서 해당 요청 본문을 받기 위해서는 pydantic에서 BaseModel을 사용하여 처리한다. 변수에 여러 타입을 지정할 때에는 Union을 이용할 수 있지만 Python 3.10 이상부터는 | 을 이용해서 처리 할 수 있다. from fastapi import FastAPI from pydantic import BaseModel class Item(BaseModel): name: str description: st..

FrameWork/Fastapi

[Fastapi] 쿼리 매개변수와 열거체(Enum) 처리

쿼리 매개변수 API 뿐만 아니라 우리가 흔히 웹페이지를 들어가면 https://example.com?no=1&page=32등과 같은 주소 형식을 많이 보게 된다. 호스트 주소 뒤 ? 뒤에 오는 변수들을 쿼리 매개변수(Query parameters)라 부른다. 각 매개변수는 & 기호로 구분되고 key=value 와 같이 키/값 쌍으로 정의한다. from fastapi import FastAPI app = FastAPI() @app.get("/users") def get_users(limit: int): return {"limit": limit} 선택적 쿼리 매개변수 : 쿼리 매개변수에서 type hint을 Union으로 지정하면 선택적 쿼리 매개변수로 사용 할 수 있다. @app.get("/items/{..

FrameWork/Fastapi

[Fastapi] 경로 매개변수와 순서 문제 처리

경로매개 변수 경로 매개변수(Path Parameters)는 흔히 우리가 말하는 URL 경로에 들어가는 변수를 의미한다. 아래의 예제에서 user_id 가 경로 매개변수 이다. from fastapi import FastAPI app = FastAPI() @app.get("/users/{user_id}") def get_user(user_id: int): return {"user_id": user_id} 여기서 http://localhost:8000/users/123 을 호출한다면 다음과 같은 결과 응답을 받을 수 있다. $ http :8000/users/123 HTTP/1.1 200 OK content-length: 15 content-type: application/json date: Wed, 14 ..

JHeaon
'FastAPI' 태그의 글 목록