REST API
REST API
는 웹 서비스 설계를 위한 일련의 원칙과 제약 조건을 제공한다. 이는 클라이언트와 서버 간의 상호작용을 표준화하기 위해 만들어졌으며, 다음과 같은 주요 원칙을 포함한다.
- 자원(Resource) 기반: 웹에서 모든 것은 자원으로 표현된다.. 자원은 URI를 통해 식별된다.
- 무상태성(Statelessness): 각 요청은 독립적이며, 이전 요청의 정보를 저장하지 않는다.
- 캐시 가능성(Cacheability): 응답은 캐시가 가능하거나 불가능하다는 정보를 명시해야 한다.
- 계층화된 시스템: 클라이언트는 중간 서버를 통해 자원에 접근할 수 있다.
- 통일된 인터페이스: 일관된 인터페이스를 통해 상호작용한다.
이러한 REST API
규칙을 잘 지키는 것을 RESTful API
라고 한다.
Spring Boot와 FastAPI에서 REST API 설계 및 구현 방법
Spring Boot에서의 REST API 설계 및 구현
Spring Boot는 REST API 개발을 위한 다양한 도구와 라이브러리를 제공한다. Spring Boot에서 REST API를 설계하고 구현하는 기본 단계는 다음과 같다:
- 컨트롤러 생성:
@RestController
어노테이션을 사용하여 컨트롤러 클래스를 생성한다.@RestControllers
는@Controller
와@ResponseBody
가 결합한 어노테이션이다.
import org.springframework.web.bind.annotation.RestController;
@RestController
public class UserController {
}
- 라우팅 설정:
@RequestMapping
또는@GetMapping
,@PostMapping
등의 어노테이션을 사용하여 요청 경로를 설정한다. - 요청 처리: 메소드 파라미터를 통해 클라이언트로부터 전달받은 데이터를 처리한다.
@RequestParam
,@PathVariable
,@RequestBody
등의 어노테이션을 사용할 수 있다.
import org.springframework.web.bind.annotation.GetMapping;
@RestController
public class UserController {
@GetMapping("/user/{id}")
public User getUserById(@PathVariable Long id) {
// 사용자 정보 조회 로직 구현
return new User(id, "홍길동"); // 예시를 위한 가상의 반환값
}
}
- 응답 구성: 메소드의 반환값을 통해 클라이언트에게 응답을 전송합니다.
ResponseEntity
를 사용하여 응답 상태 코드와 헤더를 세부적으로 설정할 수 있다.
// DTO 설정
public class User {
private Long id;
private String name;
// 생성자, getter, setter 생략
}
FastAPI에서의 REST API 설계 및 구현
FastAPI는 빠른 API 개발을 위한 기능을 제공한다. FastAPI를 사용한 REST API 설계 및 구현 과정은 다음과 같다:
- 라우팅 설정: 함수 데코레이터를 사용하여 경로와 HTTP 메소드를 설정한다.
- 요청 처리: 함수 파라미터를 통해 요청 데이터를 받습니다. 타입 힌트를 사용하여 파라미터 유형을 명시할 수 있다.
from fastapi import FastAPI
from pydantic import BaseModel
app = FastAPI()
class User(BaseModel):
id: int
name: str
@app.get("/user/{id}")
def get_user(id: int) -> User:
return User(id=id, name="John Doe")
- 응답 구성: 함수의 반환값으로 응답 내용을 직접 반환합니다. FastAPI는 자동으로 적절한 JSON 응답을 생성한다.
두 프레임워크에서의 라우팅, 요청 처리, 응답 구성 방법 비교
Spring Boot
에서는ResponseEntity
객체를 사용하여 응답의 상태 코드, 헤더, 바디 등을 세밀하게 조정할 수 있다. 또한,@ResponseBody
어노테이션 또는@RestController
를 사용하여 객체를 JSON으로 자동 변환할 수 있다.FastAPI
는 함수의 반환값을 자동으로 JSON으로 변환한다.Pydantic
모델을 사용하여 데이터 구조를 정의하면,FastAPI
는 이 모델을 JSON 응답으로 자동 직렬화한다. 또한, 상태 코드, 헤더 등을 추가할 수 있는 다양한 응답 클래스를 제공한다.
'프레임워크 > FastAPI로 이해하는 Spring Boot' 카테고리의 다른 글
(FastAPI로 이해하는 Spring Boot) 2. 프로젝트 구조 및 시작 (0) | 2024.04.21 |
---|---|
(FastAPI로 이해하는 Spring Boot) 1. 개발환경 비교 (0) | 2024.04.14 |
(FastAPI로 이해하는 Spring Boot) 0. 들어가면서 (1) | 2024.04.07 |