FastAPI 기초

예찬예찬·2024년 6월 5일

FastAPI

목록 보기
3/10
post-thumbnail

API, RESTful API, CRUD 많이 듣고 알고 있는 단어들 이지만 다시 한 번 간단히 정리하고 가보자.

API, RESTful API, CRUD

API - Application Programming Interface

  • 소프트웨어 끼리 서로 대화하기 위한 규칙들의 집합을 모두 API라고 함
  • 공식적으로 어떻게 써야 한다는 표준은 없지만 권장 사항이 존재하고 이에 대한 표준은 존재한다.
  • 표준을 사용한다면 구현하기 위한 프로토콜이 존재하고 약속대로 호출한다면 모두 호출이 되어야 한다.

RESTful API - Reprentational State Transfer

  • 그냥 인터넷에서 데이터를 교환하는 방법과 원칙에 대한 논문
  • REST 웹에서 데이터를 전달하는 간단하고 효율적인 방법을 제공하는 아키텍처.
  • 특징
    • 자원 기반이다.
    • 클라이언트와 서버가 명확히 분리
    • 각 요청은 독립적
    • 상태가 없음
    • 응답은 캐시가 가능하면 네트워크 효율성을 향상 시켜야 함
    • 인터페이스가 일관되어야 한다.
    • 주로 HTTP 메소드를 사용 - GET, POST, PUT, DELETE

CRUD - Create, Read, Update, Delete

  • 데이터 관리의 네 가지 기본 기능
  • RESTful API에서 CRUD 작업 방식
    • HTTP 메소드를 통새 CRUD 작업이 매핑 됨
    • Create: POST
    • Read: GET
    • Update: PUT/PATCH
    • Delete: DELETE

FastAPI 기초 문법

FastAPI 인스턴스

app = FastAPI()
  • 변수에 FastAPI 클래스의 인스턴스를 할당
  • 인스턴스는 라우팅과 요청 처리 응답 생성 등의 중심 점 역할을 함

라우팅?

클라이언트의 요청을 서버의 적절한 엔드포인트 (함수) 로 전달하는 과정

FastAPI에서는 라우트를 함수 생각하면 됨

  • 경로 함수는 특정 HTTP 메서드와 URL 경로에 대한 요청을 처리함
  • FastAPI는 데코레이터를 사용해서 함수를 경로와 연결한다.
  • 파라미터?
    • 쿼리 매개변수
    • 요청 매개변수
    • 폼 데이터
    • 헤더
    • 쿠키 등등
@app.get("/")
async def root():
    return {"message": "나는 예찬"}

@app.get("/test")
async def test():
    return {"message": "테스트 테스트"}

위 코드를 간단히 분석해 보면

  • 첫 줄은 get이라는 메서드로 기본 루트 url("/")로 오는 요청을 받게 되면 아래 함수를 실행시키겠다는 의미를 가짐.

⇒ 이게 어떤 원리로 동작을 할까?

Uvicorn으로 실행!

Uvicorn은 서버로 FastAPI를 실행해줌

  • Command Line에서 Uvicorn 명령어로 실행하기
uvicorn main.py:app --reload
  • Python Main 함수 안에서 실행하기 → port와 host 지정 가능 (reload는 자동 재시작기능)
if __name__ == "__main__":
	uvicorn.run("main:app", host="0.0.0.0", port-8000, reload=True)
# 위와 같이 작성 후 main.py 실행
profile
나는 오예찬

0개의 댓글