Spring

[Spring]강의 들으며 헷갈리는 Spring 개념 정리

haenni 2024. 3. 4. 13:08

📎 강의 들으며 헷갈리는 Spring 문법 정리

 


 

 

📌HTTP 요청 메시지

:HTTP 요청 메시지에 대해 더 자세한 내용은 아래의 글을 참고하자

https://dev-haen.tistory.com/19

 

🙋🏻‍♀️ HTTP 요청 메시지를 통해 클라이언트에서 서버로 데이터를 전달하는 방법을 알려주세요 !

💡HTTP 요청 메시지를 통해 클라이언트에서 서버로 값을 가져올 땐 주로 다음 3가지 방법을 사용합니다.
1. GET - 쿼리 파라미터
2. POST - HTML Form
3. HTTP message body에 데이터를 직접 담아서 요청

 

  • GET - 쿼리 파라미터
    •  /url?username=hello&age=20
    • Message Body 없이, URL의 쿼리 파라미터에 데이터를 포함해서 전달
    •  검색필터페이징등에서 많이 사용하는 방식
  • POST - HTML FORM
    • Message Body에 쿼리 파라미터 형식으로 데이터를 전달
    •  회원 가입상품 주문, HTML Form 사용
  • HTTP API
    • Message Body에 데이터를 직접 담아서 요청 
    • 데이터 형식은 주로 API를 사용하며 PATCH, POST, PUT 가능

 

 

 

 

 

 

 

📌Controller에서 사용하는 애노테이션

 

🙋🏻‍♀️ Controller에서 사용하는 애노테이션의 종류를 설명해주세요.

💡 Spring에서 사용되는 Annotation에 대해 설명해드리겠습니다 !

1. @RequestMapping: 핸들러 메서드가 어떤 요청을 처리할 지 매핑할 때 사용되는 애노테이션

2. @GetMapping, @PostMapping, @PutMapping, @DeletMapping(): 각 Get,Post,Put,Delete 요청을 처리하기 위해 사용되는 애노테이션
	("@RequestMapping(method=RequestMethod.GET)"와 같은 방법이며, 간편화 된 방법이다.)
   
3. @RequestParam: URL 쿼리 파라미터를 사용할 때 값을 바인딩하는 애노테이션
	("@RequestParam String id"와 같은 형태.)
    (URL의 쿼리 파라미터에 데이터를 포함한 방식에 주로 쓴다. REST API 방법엔 쓰이지 않는다.)
    
4. @PathVariable: URL 경로의 일부를 바인딩하는 애노테이션
	
5. @RequestBody: HTTP 요청 Message Body 부분의 데이터를 메서드 파라미터의 "객체"로 바인딩할 때 사용
	(주로 JSON, XML 데이터를 처리할 때 사용)
    
6. @ResponseBody: 핸들러 메서드가 반환한 값을 HTTP Body에 쓰기 위한 애노테이션

7. @RestController: RESTful 웹 서비스를 개발할 때 사용하는 애노테이션. 클래스에 @RestController 애노테이션을 달면 모든 핸들러 메서드의 반환 값이 HTTP 응답 메시지 바디에 쓰여진다.
	(@ResponseBody와 @Controller가 합쳐진 애노테이션이다. 두 가지 기능을 한 번에 적용할 수 있으므로 코드를 더 간결하게 작성할 수 있다.)
    (주로 JSON, XML 데이터를 처리할 때 사용)

8. @ModelAttribute: 요청을 처리하기 전에, Model 객체를 View로 넘기기 위해 바인딩 하는 애노테이션

9. @ResponseStatus: 예외처리를 할 때, 상태코드를 지정하기 위해 사용하는 애노테이션

10. @ExceptionHandler: 컨트롤러 내의 예외를 처리할 때 사용하는 애노테이션

11. @SessionAttribute: 세션에 저장할 모델 속성을 지정하기 위해 사용

12. @RestControllerAdvice: 예외 처리를 할 때, 여러 컨트롤러에서 발생하는 오류들을 처리하는 애노테이션
	(클래스에 애노테이션을 사용하여, 컨트롤러에서 발생하는 예외를 분리해서 처리할 수 있다)
    
13. @ControllerAdvice: 12번과 똑같은 역할을 한다. 대신 @ResponseBody역할을 하지 않는다.
	(@ResponseBody의 유무 차이)

 

 

 

 

 

 

📌ResponseEntity<>란?

 

🙋🏻‍♀️ ResponseEntity<>가 무엇이고, 어떻게 사용되는지 궁금해요

💡 ResponseEntity<ErrorResult>는 스프링 MVC에서 HTTP 응답을 나타내는 클래스입니다. 
이 클래스는 HTTP 응답의 상태 코드, 헤더 및 본문을 포함하는 엔티티를 나타냅니다.

여기서 ResponseEntity를 사용하는 이유는 다음과 같습니다!
1. 상태 코드 및 헤더 제어: ResponseEntity를 사용하면 HTTP 응답의 상태 코드와 헤더를 직접 제어할 수 있습니다. 
                      예를 들어, HttpStatus.BAD_REQUEST와 같이 원하는 상태 코드를 지정하고, 필요한 경우 헤더를 추가하거나 수정할 수 있습니다.
2. 응답 본문 설정      : ResponseEntity의 제네릭 타입으로 특정 클래스를 지정하여 응답 본문으로 사용할 객체를 전달할 수 있습니다. 
                      이를 통해 클라이언트에게 전송할 데이터를 포함하는 응답 본문을 생성할 수 있습니다.