FastAPI로 만드는 웹 앱 - 기본
【과거 기사】
Python Asyncio 입문
Aiohttp로 만드는 Simple Web Server - Qiita
Starlette로 만들기 Simple Web Server - QIita
FastAPI로 만드는 웹 앱 - 기본
FastAPI로 만드는 웹 앱 - validation
FastAPI로 만드는 웹 앱 - Body validation
FastAPI로 만드는 웹 앱 - Form validation
FastAPI 공식 사이트
다음 정보는 공식 사이트 튜토리얼의 첫 단계를 간략하게 요약한 것입니다.
1. 헤일로 월드
설치는 다음 명령으로만 수행할 수 있습니다.
pip install fastapi[all]
간단한 헬로 월드 프로그램을 보여줍니다.
main.pyfrom fastapi import FastAPI
app = FastAPI() # FastAPIはStarletteを直接継承するクラスです。
@app.get("/") # デコレーション、パス= /, オペレーション = get
async def root():
return {"message": "Hello World"} # コンテンツの生成
FastAPI는 Starlette를 직접 상속하는 클래스입니다. FastAPI에서도 Starlette의 모든 기능을 사용할 수 있습니다.
Starlette로 만드는 Simple Web Server
다음 명령으로 앱을 시작할 수 있습니다.
uvicorn main:app --reload
다음은 시작 명령 설명
pip install fastapi[all]
from fastapi import FastAPI
app = FastAPI() # FastAPIはStarletteを直接継承するクラスです。
@app.get("/") # デコレーション、パス= /, オペレーション = get
async def root():
return {"message": "Hello World"} # コンテンツの生成
uvicorn main:app --reload
시작 메시지입니다.
$uvicorn main:app --reload
INFO: Will watch for changes in these directories: ['C:\\Users\\User\\git\\python\\asyncio\\fastapi']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [12544] using watchgod
INFO: Started server process [12916]
INFO: Waiting for application startup.
INFO: Application startup complete.
메시지에 따라 브라우저에서 http://localhost:8000에 액세스하면 다음 콘텐츠를 받게됩니다.
{"message": "Hello World"}
대화형 API 문서
지금까지의 조작만으로, 다음과 같은 문서가 자동 생성됩니다. Swagger UI에서 구현되며 RESTful API의 사양이며 실제로 Request를 발행 할 수 있습니다. 개발 효율에 크게 기여하는 것입니다.
http://localhost:8000/docs
Try it out 버튼을 클릭하면 아래와 같이 Execute 버튼이 나타납니다.
이 경우 매개 변수가 없으므로 그대로 "Execute"버튼을 클릭하면 요청이 발행됩니다.
발행된 요청과 결과의 응답이 표시됩니다. 매우 편리합니다. 다음으로 매개 변수가있는 Request에 대해보고 싶습니다.
2. 파라미터
다음으로 경로 매개 변수, 쿼리 매개 변수, 요청 본문을 받는 방법과 Swagger UI를 사용하여 확인하는 방법을 살펴 보겠습니다.
param.pyfrom fastapi import FastAPI
app = FastAPI()
###############################
### パスパラメータ
###############################
@app.get("/items/{item_id}")
async def read_item(item_id : int):
return {"item_id": item_id}
###############################
### クエリパラメータ
###############################
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 + limit]
###############################
### リクエストボディ
###############################
from typing import Optional
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
@app.post("/items/")
async def create_item(item: Item):
return item
요청 본문의 경우에 대한 보충입니다.
* pydantic에서 BaseModel을 가져옵니다.
* BaseModel을 상속받은 클래스로 데이터 모델 (Class Item)을 선언합니다.
Swagger UI는 다음과 같이 표시됩니다.
2-1 패스 파라미터
첫 번째 GET을 선택합니다. 아직 파라미터를 입력할 수 없습니다. Try it out 버튼을 클릭합니다.
이 상태에서 처음으로 파라미터를 입력할 수 있습니다.
매개변수를 입력한 후 Execute 버튼을 클릭합니다.
발행된 요청과 성공의 응답이 표시됩니다.
그렇다면 매개 변수에 정수가 아닌 "Foo"라는 문자열을 입력하면 어떨까요?
분명히 Swagger UI 레벨에서 오류가 발생하고 요청이 발행되지 않는 것 같습니다.
2-2. 쿼리 파라미터
두 번째 GET을 선택합니다.
매개 변수에 skip=1, limit=30을 지정합니다. Execute 버튼을 클릭합니다. 다음과 같은 결과를 얻을 수 있습니다.
2-3. 요청 본문
POST를 선택합니다. 요청 본문을 입력합니다.
Execute 버튼을 클릭하면 다음과 같은 결과를 얻을 수 있습니다.
Restful API를 개발하고 확인하는 것이 매우 쉽습니다.
이번엔 이상
Reference
이 문제에 관하여(FastAPI로 만드는 웹 앱 - 기본), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/sand/items/bba0913fe4504c612b3a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
from fastapi import FastAPI
app = FastAPI()
###############################
### パスパラメータ
###############################
@app.get("/items/{item_id}")
async def read_item(item_id : int):
return {"item_id": item_id}
###############################
### クエリパラメータ
###############################
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 + limit]
###############################
### リクエストボディ
###############################
from typing import Optional
from pydantic import BaseModel
class Item(BaseModel):
name: str
description: Optional[str] = None
price: float
tax: Optional[float] = None
@app.post("/items/")
async def create_item(item: Item):
return item
Reference
이 문제에 관하여(FastAPI로 만드는 웹 앱 - 기본), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/sand/items/bba0913fe4504c612b3a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)