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의 마지막 부분

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 모델 포함)