FastAPI
OpenAPI
White_Bean
2023. 5. 10. 17:46
FastAPI는 API를 정의하기 위한 OpenAPI 표준을 사용하여 모든 API를 이용해 "스키마를 생성함
- 스키마 : 스키마는 무언가의 정의 또는 설명 (구현 코드가 아닌 추상적인 설명)
- API 스키마 : OpenAPI는 API의 스키마를 어떻게 정의하는지 지시하는 규격 (스키마 정의는 API경로, 가능한 매개변수)
- 데이터 스키마 : 스키마 라는 용어는 JSON처럼 어떤 데이터의 형태를 나타낼 수도 있음 (JSON 속성, 가지고 있는 데이터 타입 등)
- OpenAPI와 JSON 스키마 : OpenAPI는 API에 대한 API 스키마를 정의함. 또한 이 스키마에는 JSON 데이터 스키마의 표준인 JSON 스키마를 사용하여 API에서 보내고 받은 데이터의 정의를 포함함
OpenAPI의 용도
OpenAPI 스키마는 포함된 두 개의 대화형 문서 시스템을 제공
API와 통신하는 클라이언트를 위해 코드를 자동으로 생성하는 데도 사용할 수 있다.
더보기
pip install fastapi
pip install uvicorn[standard]
#FastAPI 임포트
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message" : "Hello world"}
#FastAPI 인스턴스 생성
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message" : "Hello World"}
#app변수는 FastAPI 클래스의 인스턴스가 됨
#이것은 모든 API를 생성하기 위한 상호작용의 주요 지점이 됨
#아래 코드처럼 앱을 만들면
from fastapi import FastAPI
my_project = FastAPI()
@my_project.get("/")
async def root():
return {"message" : "wow!"}
경로
경로는 첫 번째 /에서 시작하는 URL의 마지막 부분
더보기
https://example.com/first/item
경로 : /first/item
API를 빌드하는 동안 경로는 관심사와 리소스를 분리하는 주요 방법
동작
동작(Operation)은 HTTP 메소드 중 하나를 나타냄
- POST
- GET
- PUT
- DELETE
- ...
- OPTIONS
- HEAD
- PATCH
- TRACE
API를 빌드하는 동안 일반적으로 특정 행동을 수행하기 위해 특정 HTTP 메소드를 사용
- POST : 데이터를 생성하기 위해
- GET : 데이터를 읽기 위해
- PUT : 데이터를 업데이트 하기 위해
- DELETE : 데이터를 삭제하기 위해
#경로 동작 정의
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message" : "Hello World"}
더보기
다른 동작
@app.post()
@app.put()
@app.delete()
...
경로 동작 함수 정의
- 경로 : /
- 동작 : get, post ...
- 함수 : @app.get("/") 아래
# async 함수
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root(): # <- 이부분
return ("message" : :"Hello World"}
콘텐츠 반환
from fastapi import FastAPI
app = FastAPI()
@app.get("/")
async def root():
return {"message" : "Fast API"} # <- 이 부분
dict, list, 단일값을 가진 str, int 등을 반환할 수 있다. (Pydantic 모델 포함)