-
FastAPI가 뭔데?문과생이 이해하는 개발의 길 🚀 2025. 3. 30. 21:39
개발자들 사이에서는 API에 대한 이야기를 많이 주고 받습니다.
알 것 같기도 하고.. 모르는 것 같기도 하고..
API 도대체 뭔데....
제가 이해하고 수집한 설명 시작하겠습니다. Let's go!
이것도 몰라? 라고 하셔도 할 말이 없습니다. 다른 종족이라고 생각해주세요..FastAPI에 대해서 설명하려면 API에 대해서 먼저 알아야 합니다.
API (Application Programming Interface)란?
Q. 개발자가 사이트를 만들었을 때, 어떻게 사람들이 링크를 타고 들어가서 사이트를 이용할 수 있을까요?
- API가 두 소프트웨어 시스템이 서로 상호작용할 수 있도록 해주기 때문입니다.
What is an API? How does it work?
When you are using a mobile phone and accessing an application installed on the phone, you are using an API. It can be either a status…
medium.com
즉, 시스템 간 요청과 응답을 할 수 있게 도와주는 걸 의미합니다.
- 하나의 시스템(*클라이언트)은 다른 시스템(*서버)에게 특정 작업을 요청합니다.
- 이때 요청하는 방식은 보통 HTTP/HTTPS 프로토콜을 사용하며, 요청이 끝나면 응답을 받게 됩니다.
* 클라이언트는 사용자가 사용하는 장치나 프로그램(웹 브라우저, 모바일 앱 등)
* 서버는 그 요청을 처리하는 컴퓨터 시스템(웹 서버, 데이터베이스 등)
HTTP (HyperText Transfer Protocol) vs HTTPS (HyperText Transfer Protocol Secure)
HTTP는 웹에서 데이터를 전송하는 규칙을 정의하는 프로토콜입니다.
HTTPS는 HTTP에 보안을 추가한 버전입니다.
Q. 통신 프로토콜이 왜 필요할까?
데이터의 정확한 전송, 효율적인 통신, 상호 호환성 보장, 보안성 강화 등 다양한 이유로 컴퓨터나 기기 간에 신뢰성 있는 통신을 보장해 주기 때문입니다.그렇다면.. FastAPI (Representational State Transfer API)란?
- 빠른 성능: FastAPI는 비동기 방식(AsyncIO)을 지원하고, 성능이 뛰어나며, Starlette라는 빠른 웹 프레임워크를 기반으로 합니다. 성능 면에서 다른 Python 웹 프레임워크들보다 빠른 속도를 자랑합니다.
- 자동 문서화: FastAPI는 API 문서화를 자동으로 생성해 줍니다. Swagger UI와 ReDoc을 통해 쉽게 API를 테스트하고 문서화할 수 있습니다.
- 타입 힌트 지원: Python의 타입 힌트를 활용하여 코드에서 매개변수와 반환 값을 정의할 수 있고, 이를 통해 코드 작성과 유지보수를 용이하게 합니다.
- 안전성: 데이터 검증과 인증, 권한 부여 등을 쉽게 설정할 수 있어 보안이 중요한 시스템에도 적합합니다.
RestAPI는 Python으로 작성된 웹 프레임워크로, API 서버를 빠르고 효율적으로 구축할 수 있게 도와줍니다.
REST API와는 뭐가 다른건가요?
REST(Representational State Transfer) API는 API 설계 원칙이나 아키텍처 스타일입니다.
즉, FastAPI는 실제 API를 구현할 수 있도록 해주는 구현 도구이고, REST API는 설계규칙으로, RESTful한 API를 구축할 수 있도록 합니다.
RESTful이란?
REST 원칙을 준수하여 설계된 API
REST의 핵심개념이란?
리소스(자원) 중심, HTTP 표준 준수, 무상태성 유지
1) 리소스 기반 설계
데이터를 리소스로 간주하며, 각 리소스는 고유한 URI를 가진다.
2) 표준 HTTP 메소드 사용
GET: 데이터 조회
POST: 데이터 생성
PUT: 데이터 수정
DELETE: 데이터 삭제
3) 클라이언트-서버 구조 (Client-Server)
클라이언트(예: 웹 브라우저, 모바일 앱)는 서버(예: API 서버)에게 요청을 보내고, 서버는 요청을 처리한 후 응답을 보낸다.
4) 무상태성 (Stateless)
모든 요청은 독립적이며, 요청에 필요한 정보는 모두 포함되어야 한다.잘못된 부분이 있다면 꼭 댓글 부탁드립니다. (- -) (_ _)
'문과생이 이해하는 개발의 길 🚀' 카테고리의 다른 글
[Database] 관계형 데이터 모델링 (0) 2025.04.01