공식문서를 번역한 내용입니다.
https://fastapi.tiangolo.com/ko/tutorial/path-params/
경로 매개변수 - FastAPI
경로 매개변수 파이썬 포맷 문자열이 사용하는 동일한 문법으로 "매개변수" 또는 "변수"를 경로에 선언할 수 있습니다: from fastapi import FastAPI app = FastAPI() @app.get("/items/{item_id}") async def read_item(item_
fastapi.tiangolo.com
FastAPI 설치
pip install fastapi
서버 역할을 하는 uvicorn 설치
pip install “uvicorn[standard]”
Main.py
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
라이브 서버 실행
uvicorn main:app --reload #만약 app의 이름이 틀리면 에러가 발생(Error loading ASGI app ~~)
INFO: Uvicorn running on <http://127.0.0.1:8000> (Press CTRL+C to quit)
INFO: Started reloader process [156] using WatchFiles
INFO: Started server process [25308]
INFO: Waiting for application startup.
INFO: Application startup complete.
INFO: Uvicorn running on <http://127.0.0.1:8000> (Press CTRL+C to quit)
#로컬에서 앱이 서비스되는 URL을 보여줌
대화형 API문서
http://127.0.0.1:8000/docs 자동형 대화형 API문서를 볼 수 있다.
http://127.0.0.1:8000/redoc 다른 버전의 api
OpenAPI
API를 정의하기 위한 OpenAPI 표준을 사용하여 API를 이용해 “스키마”를 생성한다.
“스키마” : 무언가의 정의 또는 설명. 이를 구현하는 코드가 아니라 추상적일 설명
API”스키마” : 이 경우, OpenAPI는 API의 스키마를 어떻게 정의하는지 지시하는 규격이다. 이 스키마 정의는 API 경로, 가능한 매개변수 등을 포함한다.
데이터”스키마” : ”스키마”라는 용어는 JSON처럼 어떤 데이터의 형태를 나타낼 수도 있다. 이러한 경우 JSON 속성, 가지고 있는 데이터 타입 등을 뜻한다.
OpeaAPI와 JSON 스키마
OpenAPI는 API에 대한 API스키마를 정의한다. 또한 이 스키마에는 JSON 데이터 스키마의 표준인 JSON 스키마를 사용하여 API에서 보내고 받은 데이터의 정의(또는 “스키마”)를 포함한다.
openapi.json 확인
<http://127.0.0.1:8000/openapi.json>
{
"openapi": "3.0.2",
"info": {
"title": "FastAPI",
"version": "0.1.0"
},
"paths": {
"/items/": {
"get": {
"responses": {
"200": {
"description": "Successful Response",
"content": {
"application/json": {
...
단계별 요약
1 단계 : FastAPI 임포트
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
2 단계 : “인스턴스” 생성
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
이렇게 앱을 만든다면
from fastapi import FastAPI
my_awesome_api = FastAPI()
@my_awesome_api.get("/")
async def root():
return {"message": "Hello World"}
uvicorn을 이렇게 호출 해야함 uvicorn main:my_awesome_api --reload
3 단계 : 경로 동작 생성
“경로”는 첫 번째 /에서 시작하는 URL의 마지막 부분
예시)
<https://example.com/items/foo>
경로 : /items/foo
동작 : “동작(Operation)”은 HTTP”메소드” 중 하나를 나타낸다
일반적으로 아래 4가지를 말한다.
- POST : 데이터를 생성하기 위해서.
- GET : 데이터를 읽기 위해서.
- PUT : 데이터를 업데이트 하기 위해서.
- DELETE : 데이터를 삭제하기 위해서.
- 그외 : OPTIONS / HEAD / PATCH / TRACE
OpenAPI에서는 각 HTTP메소드들을 “동작”이라 부른다.
경로 동작 데코레이터 정의
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
# / : 경로
# get : 동작 사용
async def root():
return {"message": "Hello World"}
@app.get("/")은 FastAPI에게 바로 아래에 있는 함수가 다음으로 이동하는 요청을 처리한다는 것을 알려줌
get 외에는 @app.~~()로 사용한다.
4 단계 : 경로 동작 함수 정의
- 경로 : /
- 동작 : get
- 함수 : 데코레이터 아래에 있는 함수 (@app.get(”/”) 아래)
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
- async와 def의 차이 : https://pko89403.github.io/post/fastapiasync/ 참조
5 단계 : 콘텐츠 반환
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message": "Hello World"}
dict, list, 단일값을 가진 str, int 등을 반환할 수 있다.
'코딩 > FastAPI' 카테고리의 다른 글
FastAPI 배우기 - Query Parameters and String Validations (0) | 2023.06.27 |
---|---|
FastAPI 배우기 - Request body (0) | 2023.06.26 |
FastAPI 배우기 - Query Parameters (0) | 2023.06.23 |
FastAPI 배우기 - Path Parameters (0) | 2023.06.23 |
FastAPI (0) | 2023.06.23 |