오늘한일
- 회원 가입 API, 로그인 API, 전체 게시글 목록 조회 API 만들기 복습
import lombok.Getter;
@Getter//Spring Framework에서는 객체를 JSON 형식으로 변환하여 클라이언트에게 응답할 때, 해당 객체의 getter 메서드를 사용하여 필드 값을 가져와서 JSON으로 변환합니다.
// 그래서 @Getter 애노테이션을 사용하면 Spring이 해당 필드에 접근하여 값을 얻어와서 응답으로 보낼 수 있게 됩니다.
public class PostResponseDTO {
private String username;
private String title;
private String post;
@Builder
private PostResponseDTO(String username,String title, String post){
this.username=username;
this.title=title;
this.post=post;
}
}
import com.example.demo.post.requestdto.PostRequestDTO;
import com.example.demo.post.responsedto.PostResponseDTO;
import com.example.demo.post.service.PostService;
import com.example.demo.security.UserDetailsImpl;
import lombok.RequiredArgsConstructor;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RequiredArgsConstructor
@RestController
@RequestMapping("/api")
public class PostController {
private final PostService postService;
@PostMapping("/posts")
public PostResponseDTO createPost(@RequestBody PostRequestDTO postRequestDTO,
//어노테이션은 Spring Security에서 제공되며, 현재 사용자의 Principal(주체)을 주입받기 위해 사용됩니다.
// UserDetailsImpl은 Spring Security에서 사용되는 UserDetails 인터페이스를 구현한 클래스.
@AuthenticationPrincipal UserDetailsImpl userDetails){
return postService.createPost(postRequestDTO,userDetails.getUser());
}
}
@Controller와
@RestController의 차이점
@Controller: 이 어노테이션은 전통적인 스프링 MVC 컨트롤러를 나타냅니다. 주로 View를 반환하며, @ResponseBody 어노테이션이 없는 경우 메서드에서 반환된 값은 View 이름으로 해석되어 뷰를 찾아 렌더링합니다. 주로 JSP, Thymeleaf와 같은 템플릿 엔진을 이용하여 HTML을 생성하여 클라이언트에 전달하는 용도로 사용됩니다.
@RestController: 이 어노테이션은 데이터를 반환하는데 주로 사용됩니다. 주로 JSON 또는 XML과 같은 데이터 형식으로 응답을 생성합니다. 메서드에 @ResponseBody 어노테이션을 추가한 것과 같은 효과를 갖습니다. 따라서 주로 RESTful 웹 서비스에서 사용되며, 반환값이 직접 응답 본문으로 전송됩니다.
요약하면, @Controller는 주로 View를 반환하는 데 사용되고, @RestController는 주로 데이터를 반환하는 데 사용됩니다. 선택은 프로젝트의 요구 사항과 사용 사례에 따라 달라집니다. RESTful API를 개발하거나 단순한 데이터 반환을 하는 경우에는 @RestController를 사용하는 것이 편리합니다.
느낀점
- 아직 더 많이 복습해야 겠다. 할수록 새로운게 계속 보인다
'TIL' 카테고리의 다른 글
231222_TIL (0) | 2023.12.26 |
---|---|
231221_TIL (0) | 2023.12.22 |
231213_TIL (0) | 2023.12.14 |
231212_TIL (0) | 2023.12.13 |
231211_TIL (0) | 2023.12.13 |