FastAPI의 대표적 기능 중 하나는 바로 자동 문서화이다.
앞선 1일차에서 Hello, World!! 예제를 했었는데 그때 @app.get("/") 이라는 라우터를 정의했다.
FastAPI는 이 정보를 바탕으로 해당 API 엔드포인트(endpoint)에 대한 문서를 자동으로 생성한다.
문서 자동화의 장점은 다음과 같다.
● 시간 절약
- 수동 문서를 업데이트 안해도 되서, 개발에 더 많은 시간을 쏟을 수 있다.
● 최신 정보 유지
- 코드가 업데이트되면 문서도 자동 업데이트가 된다.
● API 테스트
- Swagger UI 또는 리독에서 직접 API를 호출하여 테스트가 가능하다. 이는 특히 프론트엔드 개발자나 다른 백엔드 개발자와 협업시 대단히 유용하다.
● 타입 검사 및 유효성 검증
- 문서 생성 시 FastAPI는 코드에 명시된 타입 힌트와 유효성 검사 규칙을 참고하여 문서에 반영한다.
이로 인해 API를 사용하는 개발자의 실수를 줄일 수 있다.
FastAPI 애플리케이션을 실행한 상테에서 웹 브라우저 주소창에 http://127.0.0.1:8000/docs를 입력하면, Swagger UI(스웨거 UI)라는 문서화 툴을 볼 수 있다.
여기서는 각 API 엔드포인트의 상세 정보 및 실제 테스트가 가능하다.
또한 http://127.0.0.1:8000/redoc 주소로 접속하면 리독(ReDoc)을 이용한 다른 형태의 문서를 볼 수 있다.
1. 스웨거(Swagger) UI(Docs)
FastAPI에서는 주로 두가지 형태의 문서 자동화를 지원한다. 스웨거와 리독 이 두가지 문서화 툴은 몇 가지 차이점이 있다.
● 대화형 API 테스트 가능
- Swagger UI는 API 엔드포인트를 실제로 호출하여 테스트를 할 수 있다.
● 매개변수 형태 및 예시 표시
- 요청 바디, 경로 매개변수, 쿼리 매개변수 등을 자세히 설명하며, 예시 값을 제공한다.
● OAuth2 지원
- OAuth2를 사용한 인증을 직접 테스트할 수 있다.
● 커스터마이징 가능
- 플러그인이나 추가 설정으로 UI를 변경할 수 있다.
2. 리독(Redoc)
● 깔끔한 UI
● 마크다운 지원
● 단일 페이지 구조
- 모든 정보를 하나의 페이지에서 볼 수 있어, 문서 전체 구조를 한눈에 파악하기 쉽다.
● 대화형 테스트 불가능
- 리독은 스웨거 처럼 대화형 API 테스트 지원이 안된다.
[주요 용어]
1) curl
- 터미널(명령 프롬프트)에서 사용할 수 있는 명령줄 도구로, 웹사이트나 API 서버와 통신할 수 있게 해준다.
curl -X 'GET' \
'http://127.0.0.1:8000/' \
-H 'accept: application/json'
2) GET / Read Root
- HTTP 요청은 여러 종류가 있는데 GET은 가장 기본적인 유형으로, 서버로부터의 정보를 조회하는 데 사용된다.
3) 200
- HTTP 응답 코드는 서버가 클라이언트의 요청에 어떻게 응답했는지를 나타내는 숫자 코드이다. 여기서 200은 요청이 성공적으로 완료되었다는 뜻이다.
4) application/json
- aplication/json은 MIME 타입의 하나로서, 테이터가 JSON 형식으로 반환되었다는 것을 나타낸다.
MIME 타입은 데이터 종류를 나타내는 문자열이다.
5) Response body
- 서버의 응답에는 헤더와 바디가 있는데 바디는 서버가 반환하는 실 데이터이다.
6) Response headers
- 응답 헤더는 서버 응답에 대한 메타데이터(정보의 정보)를 포함한다.
Content-length, content-type 등이 이에 해당된다.
'IT' 카테고리의 다른 글
FastAPI - Study 1일차 (Hello, FastAPI) (1) | 2024.12.16 |
---|---|
Flask - 애플리케이션(메모앱) 만들어보기 #7 (0) | 2024.11.24 |
Flask - 애플리케이션(메모앱) 만들어보기 #6 (0) | 2024.11.23 |
Fedora 리눅스 워크스테이션 버전 설치 및 nVidia 드라이버 설치방법(Fedora KDE Plasma의 문제점 발견) (0) | 2024.11.22 |
Flask - 애플리케이션(메모앱) 만들어보기 #5 (0) | 2024.11.19 |