From 0ff8908e4374fb9c8d1e5a9af27c809f09c01b1c Mon Sep 17 00:00:00 2001 From: jinchiim Date: Mon, 1 May 2023 17:44:35 +0900 Subject: [PATCH] Second-Seminar moreAssignment MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 2주차 심화과제 제출 #3 --- .../controller/post/PostController.java | 51 +++++++++++++------ .../org/SecondSeminar/domain/post/Post.java | 5 ++ .../SecondSeminar/service/PostService.java | 19 +++++-- 3 files changed, 55 insertions(+), 20 deletions(-) diff --git a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/PostController.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/PostController.java index 57c3c47..4ce7d57 100644 --- a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/PostController.java +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/controller/post/PostController.java @@ -1,37 +1,56 @@ -package sopt.org.SecondSeminar.controller.post; // controller 클라이언트에게 받고 보내고만 +package sopt.org.SecondSeminar.controller.post; import lombok.RequiredArgsConstructor; import org.springframework.web.bind.annotation.*; import sopt.org.SecondSeminar.controller.post.dto.request.SaveRequestDto; +import sopt.org.SecondSeminar.controller.post.dto.request.UpdateRequestDto; import sopt.org.SecondSeminar.service.PostService; import static sopt.org.SecondSeminar.SecondSeminarApplication.postList; @RestController @RequiredArgsConstructor +@RequestMapping("/api/v1") // api 버전 처리 + public class PostController { private final PostService postService; - @PostMapping("/post") + @PostMapping("/posts") public String register(@RequestBody final SaveRequestDto request) { Long userId = postService.save(request); // 컨트롤러가 service한테 요청. 일을 대신 시킴 - System.out.println(postList); // servics는 글에 대한 서비스 컨트롤러는 어디로 향하는지 중간다리 + System.out.println(postList); // // servics는 글에 대한 서비스 컨트롤러는 어디로 향하는지 중간다리 + + return userId + "번 글 등록이 완료됐습니다."; + } + + @GetMapping("/posts/{userId}") // 아이디로 게시물을 찾는 메서드 + public String getOne(@PathVariable final Long userId) { + System.out.println(userId + "의 게시물 조회" + postList.get(userId.intValue()-1)); // 최고 + + + return postService.getPostInfo(userId); // 보내주기만 한다. + } + + @GetMapping("/posts") // 제목으로 글을 찾는 메서드 + + public String search(@RequestParam final String title) { + System.out.println("글 제목으로 검색: " + title); - return userId + "번 글 등록이 완료됐습니다."; - } + return postService.getByTitle(title); + } - @GetMapping("/post/{userId}") // 아이디로 게시물을 찾는 메서드 - public String getOne(@PathVariable final Long userId) { - System.out.println(userId + "의 게시물 조회" + postList.get(userId.intValue()-1)); // 최고 + @PutMapping("/posts/{userId}") // 글을 수정하는 메서드 + public String update(@PathVariable final Long userId, @RequestBody UpdateRequestDto update) { + System.out.println(userId + " 님의 글을 수정했습니다."); + return postService.updatePost(userId, update); + } - return postService.getPostInfo(userId); // 보내주기만 한다. - } + @DeleteMapping("/posts/{userId}") // API에 행위가 들어가면 안된다는 피드백으로 변경 + public String delete(@PathVariable final Long userId){ + System.out.println(userId + " 님의 글을 삭제했습니다."); - @GetMapping("/post/search") // 제목으로 글을 찾는 메서드 - public String search(@RequestParam final String title) { - System.out.println("글 제목으로 검색: " + title); + return postService.deletePost(userId); + } - return postService.getByTitle(title); - } -} + } \ No newline at end of file diff --git a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/post/Post.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/post/Post.java index eea60c9..c459bb6 100644 --- a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/post/Post.java +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/domain/post/Post.java @@ -17,6 +17,11 @@ public void setId(long id) { this.id = id; } + public void setTitle(String title) {this.title = title;} + + public void setContent(String content) {this.content = content;} + + @Override public String toString(){ return "id: " + this.id + "\n" + diff --git a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/PostService.java b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/PostService.java index d6a8cb7..a446dea 100644 --- a/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/PostService.java +++ b/SecondClass/SecondSeminar/src/main/java/sopt/org/SecondSeminar/service/PostService.java @@ -2,6 +2,7 @@ import org.springframework.stereotype.Service; import sopt.org.SecondSeminar.controller.post.dto.request.SaveRequestDto; +import sopt.org.SecondSeminar.controller.post.dto.request.UpdateRequestDto; import sopt.org.SecondSeminar.domain.post.Post; import java.util.ArrayList; @@ -44,10 +45,20 @@ public String getByTitle(String title) { // 찾는 제목을 포함하는 게 } return "해당 제목을 포함하는 게시물: " + titlePost; } + public String updatePost(Long UserId, UpdateRequestDto requestDto) { + Post post = postList.get(UserId.intValue() - 1); + post.setContent(requestDto.getContent()); // UpdateRequestDto에서 받은것을 post에서 할당 + post.setTitle(requestDto.getTitle()); - }; // 조회 함수를 새로 만들어서 역할 위임하는 거 + return "게시물 수정 완료: " + post; + } - //controller, service >> 이해됨 - // Application, domain - // + public String deletePost(Long UserId) { + if (UserId -1 >= postList.size()) { // 유저 아이디가 postList안에 존재하지 않을때 + return "삭제할 글이 존재하지 않습니다"; + } + postList.remove(UserId.intValue() - 1); // 해당 post 삭제 + return "게시물 삭제 완료"; + } + }