FastAPI 공식문서 따라하기[1] - FastAPI
FastAPI 공식문서 따라하기[1] - FastAPI
https://fastapi.tiangolo.com/ko/ 공식문서 따라하는 글
1. FastAPI의 특징
- 빠르다.
- 개발속도 증가
- 버그가 적다.
- 자동완성 기능, 적은 디버깅 시간, 직관적
- 쉽다
- 코드 중복을 최소화시켜 짧다.
- 견고하다.
- 표준기반
2. 요구사항
- Python3.6+
- Starlette, Pydantic필요
설치
1
2
3
4
5
pip install fastapi
# 프러덕션을 위해
pip install uvicorn[standard]
#or
pip install uvicorn
3. 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#main.py
from typing import Optional
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
def read_root() :
return {"Im" : "KMS!!"}
@app.get("/user/{user_id}")
def read_item(user_id : int, name: Optional[str] = None) :
return { "user_id " : user_id,"name" : name}
실행하기
1
2
3
4
5
6
7
8
uvicorn main:app --reload
>INFO: Will watch for changes in these directories: ['/Users/kms/Code/Python/fastapi_doc']
INFO: Uvicorn running on http://127.0.0.1:8000 (Press CTRL+C to quit)
INFO: Started reloader process [25857] using statreload
INFO: Started server process [25859]
INFO: Waiting for application startup.
INFO: Application startup complete.
main
: main.py 파일 (파이썬 ‘모듈’)app
:app = FastAPI()
한 app오브젝트 .--reload
: 코드가 변경된후 서버 재시작하기. 개발환경에서만 권장
확인하기
http://127.0.0.1:8000/user/95?name=kms
4. Swagger UI 확인
5. ReDoc UI 확인
6. 심화과정
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from typing import Optional
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel) :
age : int
name : str
kms : Optional[bool] = None
@app.get("/")
def read_root() :
return {"Im" : "KMS!!"}
@app.get("/user/{user_id}")
def read_item(user_id : int, name: Optional[str] = None) :
return { "user_id " : user_id,"name" : name}
@app.put("/users/{user_id}")
def update_user(user_id : int, user: User) :
return{"user_name": user.name, "user_id : ": user_id}
확인하기
에서 나같은 경우는
user_id
는 1로age
는 28로name
은 kmskms
는 true값을 줬다. 나는 kms니까
결과
에서도 확인할 수 있다.
7. 결론
age : int
선언하나로 자동완성
, 타입검사
기능을 얻을 수 있다.
자동완성
이란 vscode같은곳에서 변수명을 쓸 때 자동으로 입력하게끔 도와주는 것을 말한다.타입검사
란 int형인지 타입이 제대로 들어맞는지 검사.
- 데이터 검증
- 데이터가 유효하지 않을때 자동으로 생성하는 에러
- JSON객체 유효성 검사
- 검증 방식은 형식에 맞지 않는 데이터를 넣는것으로 확인 가능
- 입력 데이터 반환
JSON
,쿼리 매개변수
,경로 매개변수
,Cookie
,Header
,Form
,File
형태의 자료를 읽을 수 있다고 한다.
- 출력 데이터 반환
- Python Type(
str
,int
,float
,bool
,list
등),datetime
,UUID
객체,DataBaseModel
… 등 반환JSON
형식으로 반환 가능.
- Python Type(
Swagger UI
,Redoc
지원
8. 리뷰
코드 분석을 하는데
GET
및PUT
요청에user_id
가 경로에 있는지 검증.GET
및PUT
요청에user_id
가 int 타입인지 검증.- 그렇지 않다면 클라이언트는 에러를 볼 수 있다.
GET
요청에name
이라는 선택적인 쿼리 매개변수가 검사(http://127.0.0.1:8000/user/95?name=kms처럼).name
매개변수는 = None으로 선언되었기 때문에 선택사항입니다.None
이 없다면 필수사항입니다(PUT의 경우와 마찬가지로).
- /user/{user_id}으로의 PUT 요청은 본문을 JSON으로 읽음:
age
을 필수 속성으로 갖고int
형인지 검사.name
을 필수 속성으로 갖고str
형인지 검사.- 만약 주어진다면,
kms
를 선택 속성으로 갖고 bool 형인지 검사.
- JSON을 변환하거나 JSON으로 변환하는 것을 자동화.
- 다음에서 사용할 수 있는 모든 것을 OpenAPI로 문서화:
- 2개의 대화형 문서 웹 인터페이스를 직접 제공.(
Swagger
,ReDoc
)
This post is licensed under CC BY 4.0 by the author.