본문 바로가기

분류 전체보기

(67)
11. Fast API, Schema 예시 설정 및 데이터 타입 docs에서 Json 스키마에 대해 추가적인 정보를 적어줄 수 도 있다. JSON 스키마를 정의할 수 있는 방법은 여러가지가 있다. Pydantic schma_extra class Item(BaseModel): name: str description: Optional[str] = None price: float tax: Optional[float] = None class Config: schema_extra = { "example": { "name": "Foo", "description": "A very nice Item", "price": 35.4, "tax": 3.2, } } pydantic 모델에서 Config에 schema_extra를 정의하면 된다. Field, Path, Query, Body에..
10. Fast API, Body - Nested Models Pydantic 모델을 이용하여 Nested Model도 구현할 수 있다. List Fields class Item(BaseModel): name: str description: Optional[str] = None price: float tax: Optional[float] = None tags: list = [] tags는 어떠한 자료형이든 담을 수 있는 list가 된다. from typing import List, Optional tags: List[str] = [] 위와 같이 typing에서 List를 import하여 List[str]과 같이 쓰면, str만이 요소가 되는 리스트가 된다. Set Set 또한 내부 요소를 제한할 수 있다. from typing import Optional, Set ..
09. Fast API, Body - Multiple Parameters, Field Mixed Path, Query, Request Body parameter 이제 모든 parameter들의 선언 방법에 대해 알아보았으니, 아래의 코드를 보며 어떤 parameter인지 보자. class Item(BaseModel): name: str description: Optional[str] = None price: float tax: Optional[float] = None @app.put("/items/{item_id}") async def update_item( *, item_id: int = Path(..., title="The ID of the item to get", ge=0, le=1000), q: Optional[str] = None, item: Optional[Item] = Non..
08. Fast API, Path Parameters and Numeric Validations (유효성 검사) Query parameter와 같이 Path parameter에도 유효성 기준을 설정할 수 있다. Query때와 마찬가지로 fastapi에서 Path를 import 해온다. from fastapi import FastAPI, Path, Query from typing import Optional app = FastAPI() Declare metadata Query와 다를 바 없다. 똑같이 title metadata를 설정할 수 있다. @app.get("/items/{item_id}") async def read_items( item_id: int = Path(..., title="The ID of the item to get"), q: Optional[str] = Query(None, alias="ite..
07. Fast API, Query Parameters and String Validation(유효성 검사) 이전에 봤었던 Query Parameter에서 Optional한 경우에, 값이 주어지지 않아도 되었었다. 하지만 만약 값이 주어졌을 때, Fast API에서는 추가적인 유효성 검사를 할 수 있다. from typing import Optional from fastapi import FastAPI, Query app = FastAPI() @app.get("/items/") async def read_items(q: Optional[str] = Query(None, max_length=50)): results = {"items": [{"item_id": "Foo"}, {"item_id": "Bar"}]} if q: results.update({"q": q}) return results Optional Par..
06. Fast API, Request Body (POST, PUT) 받기 지금까지는 GET방식이기에 URL 및 Request Header로 값이 넘어왔다. 하지만 POST방식에서는 Request Body로 넘어오기에 이전가지의 방식으로는 데이터를 받을 수 없다. Request Body는 Pydantic Model을 이용하여 값을 받을 수 있다. Pydantic BaseModel 먼저 Pydantic모듈의 BaseModel을 import하여 Class를 구성한다. from typing import Optional from fastapi import FastAPI from pydantic import BaseModel class Item(BaseModel): pass 이후 Item클래스에서 Requsest Body로 받을 데이터를 정의하면 된다. class Item(BaseMod..
05. Fast API, REST API Query Parameters 설정 함수 파라미터에 path에 정의되지 않은 변수를 정의할 경우, 이는 Query Parameter로 인식이 된다. 쿼리는 key-value 형식으로 되고, URL뒤에 ?이 붙고 적히며, 여러개일 경우 &으로 이어진다. http://127.0.0.1:8000/items/?skip=0&limit=10 from fastapi import FastAPI app = FastAPI() fake_items_db = [{"item_name": "Foo"}, {"item_name": "Bar"}, {"item_name": "Baz"}] @app.get("/items/") async def read_item(skip: int = 0, limit: int = 10): return fake_items_db[skip : skip..
04. Fast API, REST API Path Parameter 설정 Fast API 에서는 Flask에서 하던 것과 같이 Path Parameter를 설정할 수 있다. from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_id): return {"item_id": item_id} 위와 같이 선언을 하고 난 뒤, http://127.0.0.1:8000/items/item1 으로 url을 입력해보면 {"item_id":"item1"}과 같은 결과를 얻을 수 있다. Path Parameter with types Fast API의 장점인 Type Hinting을 사용하여 위의 코드를 바꿔보자 from fastapi import FastAPI app = Fas..