
블로그 글 삭제 API 구현하기 1. 서비스 메서드 코드 BlogService @RequiredArgsConstructor // final이 붙거나 @NotNull이 붙은 필드의 생성자 추가 @Service public class BlogService { private final BlogRepository blogRepository; // 게시글을 작성한 유저인지 확인 private static void authorizeArticleAuthor(Article article) { // 현재 사용자 이름을 가져와 게시물의 작성자와 비교하고, 다른 경우에 예외 던짐 String userName = SecurityContextHolder.getContext().getAuthentication().getName(..

글 수정 API 1. 서비스 코드 구현 - update() => 특정 아이디의 글 수정 1) Articles.java - 엔티티에도 update() 메서드 구현 public void update(String title, String content) { this.title = title; this.content = content; } 2) DTO 생성 - request.UpdateArticleRequest @Getter @NoArgsConstructor @AllArgsConstructor public class UpdateArticleRequest { private String title; private String content; } 3) 서비스 코드 구현 - BlogService @RequiredArg..

블로그 글 목록 조회 API 구현하기 1. 서비스 코드 구현 BlogService - findAll() 추가 @RequiredArgsConstructor // final이 붙거나 @NotNull이 붙은 필드의 생성자 추가 @Service public class BlogService { private final BlogRepository blogRepository; // AddArticleRequest를 사용하여 새 게시물을 생성하고, // 지정된 사용자 이름으로 게시물을 저장 public Article save(AddArticleRequest request, String username) { return blogRepository.save(request.toEntity(username)); } //추가 ..

1. 프로젝트 세팅 build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.0.2' id 'io.spring.dependency-management' version '1.1.3' } group = 'com.example' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } configurations { compileOnly { extendsFrom annotationProcessor } } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-s..

식당 비유 - 주문 이후 손님에게 전달될 때까지 상황 생각해보기 : 식당에 가면 손님 -> 점원 -> 주방 이렇게 주문이 전달되고, 나올 때는 주방 -> 점원 -> 손님 순으로 전달된다. 그림으로 정리하면 다음과 같다. API는 클라이언트의 요청을 서버에 잘 전달하고, 서버의 결과물을 클라이언트에게 잘 돌려주는 역할을 한다. # REST API REST REST는 Representational State Transfer 풀어서 말하면 자원을 이름으로 구분해 자원의 상태를 주고받는 API 방식. # REST API 의 특징 / 장단점 1. 특징 - 서버/클라이언트 구조,무상태,캐시 처리 가능,계층화,인터페이스 일관성 2. 장단점 장점 - REST API의 장점은 URL만 보고도 무슨 행동을 하는 API인지..

HTTP 응답 - HTTP API, 메시지 바디에 직접 입력 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. ResponseBodyController @Slf4j @Controller public class ResponseBodyController { // "/response-body-string-v1" 경로로 GET 요청이 들어올 때, // "ok" 문자열을 직접 HTTP 응답 바디에 쓰는 메서드. @GetMapping("/response-body-string-v1") public void responseBodyV1(HttpServletResponse response) throws IOException..

HTTP 응답 - 정적 리소스, 뷰 템플릿 스프링(서버)에서 응답 데이터를 만드는 방법은 크게 3가지이다 정적 리소스 예) 웹 브라우저에 정적인 HTML, css, js를 제공할 때는, 정적 리소스를 사용한다. 뷰 템플릿 사용 예) 웹 브라우저에 동적인 HTML을 제공할 때는 뷰 템플릿을 사용한다. HTTP 메시지 사용 HTTP API를 제공하는 경우에는 HTML이 아니라 데이터를 전달해야 하므로, HTTP 메시지 바디에 JSON 같은 형식으로 데이터를 실어 보낸다. 스프링 부트는 클래스패스의 다음 디렉토리에 있는 정적 리소스를 제공한다. /static , /public , /resources , /META-INF/resources src/main/resources 는 리소스를 보관하는 곳 이고, 또 클..

HTTP 요청 메시지 - JSON 이번에는 HTTP API에서 주로 사용하는 JSON 데이터 형식을 조회하기 V1 - 기존 서블릿에서 사용했던 방식 RequestBodyJsonController @Slf4j @Controller public class RequestBodyJsonController { // ObjectMapper 객체를 생성. // ObjectMapper는 JSON 데이터를 자바 객체로 변환하거나 자바 객체를 JSON으로 직렬화하는 데 사용. private ObjectMapper objectMapper = new ObjectMapper(); @PostMapping("/request-body-json-v1") public void requestBodyJsonV1(HttpServletRequ..