⬇️리팩토링 전 코드
@RestController
@CrossOrigin(origins = "http://localhost:3000", methods = {RequestMethod.OPTIONS, RequestMethod.DELETE, RequestMethod.GET, RequestMethod.POST, RequestMethod.PUT})
@RequestMapping("/review")
public class ReviewController {
private final ReviewService reviewService;
public ReviewController(ReviewService reviewService) {
this.reviewService = reviewService;
}
// 리뷰 등록
@PostMapping("/save")
public ResponseEntity save(@RequestBody Review review) {
return ResponseEntity.ok().body(reviewService.save(review));
}
//해당 학교애 대한 전체 리뷰 보여주기
@GetMapping("/list")
public ResponseEntity list(Long schoolId) {
return ResponseEntity.ok().body(reviewService.findAll(schoolId));
}
//update
@PutMapping(value = "/update/{id}")
public ResponseEntity<Review> update(@RequestBody ReviewDTO dto, @PathVariable Long id) {
Optional<Review> reviewdto = this.reviewService.update(id, dto);
return new ResponseEntity(reviewdto, HttpStatus.OK);
}
//delete
@DeleteMapping(value = "/delete/{id}")
public void delete(@PathVariable Long id) {
reviewService.delete(id);
}
}
❤️@CrossOrigin을 삭제해도 된다.
(이 어노테이션을 대체하는 코드(방법)가 있을 텐데 그 방법이 정확히 모르겠다)
❤️매핑 어노테이션에 value값이 꼭 들어있어야 하는 것은 아니다.
package hanium.highwayspring.review;
import hanium.highwayspring.school.School;
import hanium.highwayspring.school.SchoolService;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Optional;
@RestController
@RequestMapping("/review")
public class ReviewController {
private final ReviewService reviewService;
private final SchoolService schoolService;
public ReviewController(ReviewService reviewService, SchoolService schoolService) {
this.reviewService = reviewService;
this.schoolService = schoolService;
}
// 리뷰 등록
@PostMapping()
public ResponseEntity<Review> save(@RequestBody ReviewDTO reviewdto) {
School school = schoolService.findBySchoolId(1L)
.orElseThrow(() -> new IllegalArgumentException("학교가 존재하지 않습니다."));
Review review = ReviewDTO.toEntity(reviewdto, school);
return ResponseEntity.ok().body(reviewService.save(review));
}
//해당 학교애 대한 전체 리뷰 보여주기
@GetMapping()
public ResponseEntity<List<Review>> getReviewsBySchoolId(@RequestParam(name = "schoolId") Long schoolId) {
School school = schoolService.findBySchoolId(schoolId)
.orElseThrow(() -> new IllegalArgumentException("학교가 존재하지 않습니다."));
List<Review> reviews = reviewService.findAll(school);
return ResponseEntity.ok(reviews);
}
//update
@PutMapping(value = "/{id}")
public ResponseEntity<Review> update(@RequestBody ReviewDTO dto, @PathVariable Long id) {
Optional<Review> reviewdto = this.reviewService.update(id, dto);
return new ResponseEntity(reviewdto, HttpStatus.OK);
}
//delete
@DeleteMapping(value = "/{id}")
public void delete(@PathVariable Long id) {
reviewService.delete(id);
}
}
⬆️ 리팩토링 후 코드.
- 팀원이 알려주기로는 매개변수에 @RequestBody 없이 객체만을 매개변수에 적어서 사용이 가능하다고 하는데 내가 post men에 테스트를 했을 때는 값들이 다 null로 나와서 없애지는 못했다.
- 그리고 put과 delete에서도 value값을 사용하지 않고 사용할 수 있다고 팀원이 이야기해 줬는데 update와 delete는 id값이 있어야 하기 때문에 아직까지 내 수준(?)에서는 없애는 데에 실패했다.
'개발일지 > 2023_한이음' 카테고리의 다른 글
[개발외]멘토링 진행 - 2023/6/1 (0) | 2023.06.14 |
---|---|
[개발]🚨ERROR - 객체vs기본 자료형의 불일치 (0) | 2023.06.12 |
[개발]🎁배운점 - JPA 쿼리 메소드의 매개변수_자료형 (0) | 2023.06.01 |
[개발]🚨ERROR - org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error (0) | 2023.05.31 |
[개발] H2 DB 테이블 intellij에서 보이게 하기(실패/해결) (0) | 2023.05.31 |