728x90
🛠Controller
- 마지막으로 Api 컨트롤러를 구현할 것이다.
- RestController를 사용할 것이다.
- 전통적인 Spring MVC의 컨트롤러인 @Controller는 주로 View를 반환하기 위해 사용한다.
- @RestController는 Spring MVC Controlle에 @ResponseBody가 추가된 것이다. 당연하게도 RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것이다.
➡️SaveCategory
@PostMapping
public ResponseEntity<Void> saveCategory(@Valid@RequestBody SaveRequest request){
categoryService.createCategory(request);
return OK;
}


우선 부모 카테고리를 넣으면 정상적으로 값이 들어간다.


이후 자식 카테고리를 넣으면 정상적으로 부모 밑으로 값이 들어가는 것을 확인할 수 있다.
➡️getCategoeyById
@GetMapping("/{id}")
public ResponseEntity<CategoryResponse> getCategoryById(@PathVariable(name = "id") Long categoryId){
return categoryService.getCategoryById(categoryId);
}
이제 조회를 해보자 . 위에서 만든 카테고리를 조회해보자. (부모와 자식을 모두 조회할 것이다.)


부모를 조회하면 자식까지 정상적으로 조회되는 것을 볼 수 있다.
➡️updateCateogory
@PatchMapping("/{id}")
public ResponseEntity<Void> updateCategory(@PathVariable(name = "id") Long id,
@Valid@RequestBody SaveRequest request){
categoryService.updateCategory(id, request);
}
이제 수정을 해볼 것이다.


정상적으로 수정이 되었다.
➡️deleteCategory
@DeleteMapping("/{id}")
public ResponseEntity<Void> deleteCategory(@PathVariable(name = "id")Long id){
categoryService.deleteCategory(id);
}
이제 삭제를 해보자
삭제는 자식 카테고리가 있으면 삭제가 불가능하도록 로직이 구현되어 있다.


만약 자식 카테고리가 있다면 예외가 정상적으로 던져진다.
이제 정상적인 삭제를 해보자

요청을 하면 쿼리가 나가는지 보자


정상적으로 쿼리가 나가고 DB에서 값이 삭제되었다.
이로써 카테고리 로직 구현은 마무리가 되었다. 사실 구현하기 전에는 어려움이 없을 것이라고 생각했는데 생각보다 신경 써야 하는 부분이 많았다. 이런 로직을 자주 접하면서 더 최적화할 수 있도록 해야겠다.
😸예제코드
https://github.com/ryudongjae/blog-ex
GitHub - ryudongjae/blog-ex: 📁블로그 예제 코드
📁블로그 예제 코드 . Contribute to ryudongjae/blog-ex development by creating an account on GitHub.
github.com
728x90
'Dev > Spring' 카테고리의 다른 글
| ApplicationContext - Annotation 기반 Bean register 등록 원리 (0) | 2024.10.23 |
|---|---|
| [Spring] Maven과 Gradle (0) | 2022.01.06 |
| [Spring] JPA+Spring으로 카테고리 로직 구현 - 2 (0) | 2021.12.10 |
| [Spring] JPA+Spring으로 카테고리 로직 구현 - 1 (0) | 2021.12.10 |
| [Spring] 어노테이션으로 로그인 여부 확인(Interceptor) (0) | 2021.09.21 |