새소식

이것저것 개발노트

[FastAPI] [Chapter 7] 어플리케이션 개요와 디렉토리

  • -

 

 

 

REST API에서는 HTTP로 정보를 주고받을 때 URL로 모든 '리소스'를 정의한다.

리소스를 나타내는 엔드포인트와 HTTP 메서드 (GET/POST/PUT/DELETE 등)을 조합하여 API 전체를 구성한다. 

 

REST에 따라 ToDo 앱을 구현하기 위해 필요한 기능을 정리해 본다.

 

- ToDo 리스트 표시하기 

- ToDo에 작업 추가하기 

- ToDo 작업 설명문을 변경하기 

- ToDo 작업 자체를 삭제하기

- ToDo 작업에 '완료' 플래그 달기 

- ToDo 작업에서 '완료' 플래그 제거하기 

 

이 외에도 날짜순으로 정렬하거나, 수동으로 순서를 바꾸거나, 중첩된 ToDO 작업을 정의할 수 있도록 하는 등, 다양한 기능을 추가한 앱을 만들 수 있다. 

 

이 기능들을 REST API에서, 

- HTTP메서드 엔드포인트 ({} 내부는 파라미터)

의 형식으로 적으면 다음처럼 정의할 수 있다.

 

- GET /tasks

- POST /tasks

- PUT /tasks/{task_id}

- DELETE /tasks/{task_id}

- PUT /tasks/{task_id}/done

- DELETE /tasks/{task_id}/done

 

책에서는 이것이 유일한 정답이 아니며,

PATCH를 사용하거나,

'완료' 플래그의 ON/OFF를 동일한 HTTP 메서드로 전환되는 토글로 만들거나 

UI나 DB의 사양에 따라 별도의 인터페이스로 정의할 수 있다고 말하고 있다.

 

 

FastAPI에서는 디렉터리 구조나 파일 분할 방법을 엄격하게 정하고 있지 않는다.

FastAPI의 공식 문서에 권장되는 디렉터리 구조는 나와 있지만,

프로젝트가 커져서 해당 구조를 변경할 경우 대규모 리팩토링을 해야하는 상황이 발생할 수 있다.

 

해당 책에서는 미리 디렉토리를 어느 정도 세세하게 나눠 놓는다. 이를 통해 애플리케이션의 규모가 커져도 견딜 수 있는 코드베이스를 가진 실용적인 API를 목표로 한다. 

 

app
├── __init__.py
├── main.py
├── schemas
│   └── __init__.py
├── routers
│   └── __init__.py
├── models
│   └── __init__.py
└── cruds
    └── __init__.py

 

위와 같이 api 디렉터리 아래에 schemas, routers, models, cruds의 네 개의 디렉터리를 준비한다. 

 

__init__.py는 앞 장에서 설명한 것처럼 파이썬 모듈임을 나타내는 빈 파일이다. 

 

 

 

 

 

 

 

 

Contents

포스팅 주소를 복사했습니다

이 글이 도움이 되었다면 공감 부탁드립니다.