반응형
2주차 내용-3
API : 클라이언트와 서버 간의 약속
REST : 주소에 명사, 요청방식에 동사를 사용함으로써 의도를 명확히 드러냄
Ø 생성 POST / 조회 GET / 수정 PUT / 삭제 DELETE
Ø 주소에 들어가는 명사는 복수형을 사용하고, 동사는 사용하지 않는다.
Ø GET / courses PUT/ courses /2 와 같은 방식
@RequiredArgsConstructor
@RestController
public class CourseController {
private final CourseRepository courseRepository;
@GetMapping("/api/courses")
public List<Course> getCourses() {
return courseRepository.findAll();
}
}
^ controller 패키지 내 CourseController.java 생성
실행 후 http://localhost:8080/api/courses 접속 또는 ARC 로 확인> 아래 화면처럼 API 확인가능
Ø POST : 생성요청
@PostMapping("/api/courses") // PostMapping을 통해서, 같은 주소라도 방식이 다름을 구분합니다.
public Course createCourse(@RequestBody CourseRequestDto requestDto) {
// @RequestBody : 컨트롤러에서 요청을 받는 것을 표시하는 어노테이션
// requestDto 는, 생성 요청을 의미합니다.
// 강의 정보를 만들기 위한 강의 제목과 튜터 이름을 가져와줍니다.
// 저장하는 것은 Dto가 아니라 Course이니, Dto의 정보를 course에 담아야 합니다.
// 잠시 뒤 새로운 생성자를 만듭니다.
Course course = new Course(requestDto);
// JPA를 이용하여 DB에 저장하고, 그 결과를 반환합니다.
return courseRepository.save(course);
}
^ CourseController.java 에 추가
public Course(CourseRequestDto requestDto) {
this.title = requestDto.getTitle();
this.tutor = requestDto.getTutor();
}
^Course.java 에 생성자 추가
POST 의 경우 반드시 아래와 같은 규칙 적용해야 함.
Ø PUT : 데이터 변경
@PutMapping("/api/courses/{id}")
public Long updateCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto) {
return courseService.update(id, requestDto);
}
^ CourseController.java 아래에 추가
Ø {id} : 변형되서 들어오는 값을 의미
Id 값을 넣어주기 위해 @PathVariale 사용
Ø DELETE
@DeleteMapping("/api/courses/{id}")
public Long deleteCourse(@PathVariable Long id) {
courseRepository.deleteById(id);
return id;
}
반응형
'강의정리들 > [2021] Spring Boot' 카테고리의 다른 글
[코스파] 스프링 기초 4주차-2 (0) | 2022.01.02 |
---|---|
[코스파] 스프링 기초 4주차-1 (0) | 2022.01.02 |
[코스파] 스프링 기초 3주차 (0) | 2022.01.01 |
[코스파] 스프링 기초 2주차-2 (0) | 2021.12.05 |
[코스파] 스프링 기초 2주차-1 (0) | 2021.12.03 |