TIL

TIL - 2024/09/24

기석김 2024. 9. 24. 18:08

RESTful API 설계란?

REST(Representational State Transfer)는 웹 표준을 기반으로 하는 API 설계 아키텍처!

RESTful API는 네트워크 상에서 클라이언트와 서버 간의 통신을 위해 자원(Resource)의 상태를 전달하는 방법

클라이언트가 서버의 자원에 접근하고 이를 활용할 수 있도록 하는 역할을 함

 

각 자원은 명확한 URI로 식별되어야 함 = 자원의 식별

URl는 명사를 사용해야 한다. ex) /getUsers 대신 /users

 

GET - 조회

POST - 생성

PUT - 수정(업데이트)

DELETE - 삭제

 

@PathVariable

URL 경로에 포함된 변수를 컨트롤러 메서드의 매개변수로 바인딩 하는 데 사용

URL 경로의 일부를 변수로 사용하여, 동적으로 변하는 URL 경로를 처리 가능

간결하고 직관적인 API 경로를 설계 가능

@RestController
@RequestMapping("/users")
public class UserController {

    @GetMapping("/{userId}")
    public String getUser(@PathVariable("userId") Long userId) {
        return "User ID: " + userId;
    }
}

 

@RequestParam

클라이언트가 전송하는 HTTP 요청 파라미터를 컨트롤러 메서드의 매개변수로 바인딩 하는 데 사용

URL에서 지정된 이름의 파라미터를 메서드 매개변수로 전달

필수 여부, 기본값 설정 등의 추가적인 설정이 가능

@GetMapping("/products")
public String getProduct(@RequestParam("id") Long productId) {
    // productId를 사용한 로직 처리
}

 

@ModelAttribute

요청 파라미터를 객체로 매핑하여, 복잡한 데이터 구조를 쉽게 다루게 해준다

폼 데이터의 각 필드가 객체의 필드와 자동으로 매핑됨

복잡한 객체 구조의 데이터를 간편하게 처리 가능

javaCopy code
@PostMapping("/register")
public String registerUser(@ModelAttribute User user) {
    // user 객체를 사용한 로직 처리
}

 

@RequestBody

클라이언트가 전송하는 HTTP 요청의 본문(body)을 Java 객체로 변환

HTTP 요청 본문의 내용을 자바 객체로 역 직렬화

JSON 형식의 데이터 처리에 사용

javaCopy code
@PostMapping("/api/user")
public String apiUser(@RequestBody User user) {
    // user 객체를 사용한 로직 처리
}

 

Dispatcher-Servlet

  1. 클라이언트 요청이 디스페쳐 서블릿으로 들어옴
  2. Handler Mapping을 통해 어떤 Controller로 매핑할지 확인
  3. Handler Adapter를 사용해 Controller로 요청 전달
  4. Service 단에서 비지니스 로직을 사용 (보통 Database CRUD 진행)
  5. 컨트롤러가 ResponseEntity 반환
  6. 서버 응답을 클라이언트로 반환