🍳

초보 개발자의 일상

Java/SpringBoot

@RestController, @RequestMapping, ResponseEntity, @RequestBody, ResponseEntity.ok()

dev.jelee 2024. 11. 5. 23:05

 

예외처리 관련해서 수업을 나갔는데 어려운 것 투성이다.

메모를 해놓고 그 당시에 아, 이런 내용이구나! 라고 이해해놓고선 다음에 또 마주치면 '아.. 무슨 내용이었는데..'하면서 다시 찾아보게된다. 언제쯤 익숙해지려나.. 계속 반복적으로 작성하고 생각하는 방법 밖에는 없겠지. (눈물)


@RestController

  • Spring MVC에서 RESTful 웹 서비스를 구현할 때 사용되는 어노테이션.
  • HTTP 응답 본문에 객체를 JSON 또는 XML 형식으로 자동 변환하여 반환.

@RequestMapping("/경로")

  • Spring MVC에서 HTTP 요청을 특정 메서드나 클래스에 매핑하는 데 사용되는 어노테이션.
  • HTTP 메서드(GET, POST 등)와 URL 경로를 지정하여 요청을 처리
  • 예시: @RequestMapping("/codegroups") -> /codegroups로 들어오는 HTTP 요청을 처리.

ResponseEntity

  • HTTP 응답 상태 코드, 헤더, 본문(body)을 포함한 전체 응답을 표현하는 클래스
  • ResponseEntity는 클라이언트에게 반환되는 "전체 HTTP 응답"을 구성하는 객체입니다. 
  • 클라이언트가 서버에 요청을 보내면, 서버는 HTTP 응답을 보냅니다. 이 응답은 3가지 중요한 요소로 구성되며 ResponseEntity는 이 세 가지를 모두 설정할 수 있는 객체입니다..
    • 상태 코드: 응답이 성공적이었는지, 실패했는지 등을 나타내는 코드 (예: 200, 404, 500 등).
    • 헤더: 응답에 대한 추가적인 정보 (예: 응답 타입, 캐시 설정 등).
    • 본문(body): 실제로 클라이언트가 받아보게 되는 데이터 (예: JSON, HTML 등).

@RequestBody

  • 클라이언트로부터 전송된 요청 본문(body)을 메서드 파라미터로 바인딩하는 데 사용.
  • HTTP 요청의 본문에 있는 데이터를 자바 객체로 변환하여 메서드의 파라미터로 전달할 수 있습니다. 주로 JSON, XML, Form data 형식의 데이터를 처리할 때 사용됩니다.

예시

@PostMapping
public ResponseEntity<CodeGroupDTO> register(@RequestBody CodeGroupDTO codeGroupDTO) {
	....
}

 

해석:

클라이언트로부터 RESTful API를 POST 방식으로 요청을 받으면,

요청 본문의 내용을 CodeGroupDTO 객체에 바인딩하고 그 결과를 ResponseEntity를 사용해 내용을 반환한다는 의미

 

"@RequestBody CodeGroupDTO codeGroupDTO" 이건 클라이언트로부터 전송된 요청 본문을 CodeGroupDTO 객체에 바인딩한다는 의미.


return ResponseEntity.ok(codeGroupDTO);
  • HTTP 상태 코드 200 OK를 가진 응답을 생성하고, 인자로 받은 데이터를 HTTP 응답 본문에 포함시켜 클라이언트에 반환.
  • **Spring의 @RestController**를 사용하고 있을 경우, 응답 본문은 기본적으로 JSON 형식으로 변환.
  • codeGroupDTO 객체를 JSON 형식으로 반환.