본문 바로가기

TIL

231220_TIL

오늘한일

  • 회원 가입 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