본문 바로가기

FastAPI

(16)
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..
03. Fast API, Pydantic을 이용한 Type Hinting 기존의 Flask나 Django와는 달리 Fast API는 Type Hints를 사용하고 있다. Type Hints는 파라미터 값이어떤 자료형이 들어와야하는 지 코드 상에서 명시하는 것이다. 아래의 예를 보자. from pydantic import BaseModel from typing import Optional class User(BaseModel): id: int name = 'Jane Doe' age : Optional[str] = None pydantic의 BaseModel을 상속받은 User 클래스에 id 필드를 int 형식으로, name은 Default 값으로 'Jane Doe'를 주어 type annotation이 불필요하다. user = User(id='123') assert user.i..
02. Fast API 프로젝트 생성 및 실행 Installation $ pip install fastapi $ pip install uvicorn[standard] Create App from typing import Optional from fastapi import FastAPI app = FastAPI() @app.get("/") def read_root(): return {"Hello": "World"} Run $ uvicorn main:app --reload INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit) INFO: Started reloader process [28720] INFO: Started server process [28722] INFO: Waiting..
01. Fast API란? https://fastapi.tiangolo.com/ Fast API는 현재 파이썬 웹 프레임워크 중 가장 빠른 것 중 하나이며, type hints를 제공한다. 주요 특징은 아래와 같다. Fast: NodeJS 및 Go와 동등한 높은 성능. 가장 빠른 Python 프레임워크 중 하나. ⇒ Starlette 및 Pydantic Fast to code Fewer bugs Intuitive Easy: 배우기 쉽고, 문서를 쉽게 읽을 수 있음 Short: 코드 중복 적음. 파라미터 정의에 다양한 기능 제공 Robust: 문서 자동화 및 쉬운 배포 Standards-based: 개방형 API 표준, JSON Schema를 기반 Automatic Documentation Fast API의 장점 중 하나는 자동으로..