지난 포스팅과 바로 이어지는 글이다.
GET
, POST
, PUT
, DELETE
를 다뤄보자.
먼저 controller pakage와 그 밑에 CourseController를 만들어주자.
@GetMapping("/api/courses")
public List<Course> getCourses() {
return courseRepository.findAll();
}
/api/courses
이 친구로 접근하면 repo에 있는 데이터를 findAll() 해주는 것이다.
결과는 Json값으로 나온다.
// PostMapping을 통해서, 같은 주소라도 방식이 다름을 구분합니다.
@PostMapping("/api/courses")
public Course createCourse(@RequestBody CourseRequestDto requestDto) { //@RequestBody 요청을 받는 녀석이란 걸 표시. 없으면 요청한 정보가 DTO에 안들어감
// requestDto 는, 생성 요청을 의미합니다.
// 강의 정보를 만들기 위해서는 강의 제목과 튜터 이름이 필요하잖아요?
// 그 정보를 가져오는 녀석입니다.
// 저장하는 것은 Dto가 아니라 Course이니, Dto의 정보를 course에 담아야 합니다.
Course course = new Course(requestDto);
// JPA를 이용하여 DB에 저장하고, 그 결과를 반환합니다.
return courseRepository.save(course);
}
public Course createCourse(@RequestBody CourseRequestDto requestDto) 이 부분에서 @RequestBody
얘의 역할은 요청을 받는 녀석이란 걸 표시하는 역할이다. 없으면 요청한 정보가 DTO에 안들어간다.
이렇게 하면 생성 끝.
@PutMapping("/api/courses/{id}")
public Long updateCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto) { // {} 안에 값을 PathVariable 붙은 친구한테 넣어준다
return courseService.update(id, requestDto);
}
@DeleteMapping("/api/courses/{id}")
public Long deleteCourse(@PathVariable Long id) {
courseRepository.deleteById(id);
return id;
}
@PathVariable
은 {} 안에 값을 PathVariable 붙은 친구한테 넣어주는 역할을 한다.
courseService.update() 의 update함수는 아까 service단에 만들어줬었고,
courseRepository.deleteById()는 JPA가 제공하는 함수이다.
API 테스트는 ARC(Advanced REST Client) 를 이용하였다.
Junit으로도 해볼 것이다.
get은 간단하게 주소만 입력해주면 된다.
먼저 POST는
이 두 친구를 바꿔줘야 한다.
Headers에 Name 값과 Value값을 각가 사진에 보이는 것처럼 세팅한 후 BODY에는 JSON값을 입력해주면 된다.
그 다음 PUT
POST와 동일한데 BODY 부분에 수정하고 싶은 JSON 값을 넣어주면 된다.
천천히 꾸준히 해보자!!!!
끝!