Spring Framework

API - POST, PUT, DELETE

na_o 2021. 7. 21. 02:01
728x90

- POST , PUT, DELETE

데이터 생성, 수정, 삭제 API 만들어보기

/*CourseController.java*/

package com.sparta.week02.controller;

...

@RequiredArgsConstructor //Repository를 대신해서 넣어주는 역할
@RestController //JSON으로 응답
public class CourseController {
    private final CourseRepository courseRepository;
    private final CourseService courseService;

    //Spring은 요청을 주고 받는 방식을 강제하는 프레임워크다..!!//
    
    // PostMapping을 통해서, 같은 주소라도 방식이 다름을 구분합니다.
    //같은 주소여도 조회 방식과 생성 방식은 다르기 때문에 GET/POST 방식에 따라 찾아감
    @PostMapping("/api/courses")
    //@RequestBody : 브라우저에서 데이터가 넘어오는 것을 잡아다 주는것
    public Course createCourse(@RequestBody CourseRequestDto requestDto) {
        // requestDto 는, 생성 요청을 의미합니다.
        // 강의 정보를 만들기 위해서는 강의 제목과 튜터 이름이 필요하잖아요?
        // 그 정보를 가져오는 녀석입니다.

        // 저장하는 것은 Dto가 아니라 Course이니, Dto의 정보를 course에 담아야 합니다.
        // 잠시 뒤 새로운 생성자를 만듭니다.
        Course course = new Course(requestDto); //매개변수가 requestDto인 생성자가 없어서 만들예정

        // JPA를 이용하여 DB에 저장하고, 그 결과를 반환합니다.
        return courseRepository.save(course);
    }

    @GetMapping("/api/courses") //Get방식: 데이터 조회 요청
    public List<Course> getCourses() {
        return courseRepository.findAll();
    }

    @PutMapping("/api/courses/{id}") //{id} : 브라우저에서 id값을 전달받은게 들어감
    //@PathVariable : 주소에 있는 값(id)을 가져오는 기능을 하는 어노테이션
    public Long updateCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto) {
        return courseService.update(id, requestDto);
    }

    @DeleteMapping("/api/courses/{id}")
    public Long deleteCourse(@PathVariable Long id) {
        courseRepository.deleteById(id);
        return id;
    }
}
/*Course.java*/

package com.sparta.week02.domain;

...

@Getter //getter함수를 대신함(lombok)
@NoArgsConstructor // 기본생성자를 대신 생성해줍니다.(lombok)
@Entity
public class Course extends Timestamped {

    @Id
    @GeneratedValue(strategy = GenerationType.AUTO)
    private Long id;

    @Column(nullable = false)
    private String title;

    @Column(nullable = false)
    private String tutor;

	/*기존 코드에 Course 클래스 생성자 추가!*/
    public Course(CourseRequestDto requestDto) {
        this.title = requestDto.getTitle();
        this.tutor = requestDto.getTutor();
    }

    public Course(String title, String tutor) {
        this.title = title;
        this.tutor = tutor;
    }

    public void update(CourseRequestDto requestDto) {
        this.title = requestDto.getTitle();
        this.tutor = requestDto.getTutor();
    }

}

 

- POST 결과 화면

ARC를 이용해 주소의 결과 화면을 봄. 위의 데이터를 담아 요청을 보내면 아래 데이터를 반환하면서 응답함.

 

- PUT 결과 화면

ARC를 이용해 결과를 확인. 수정할 데이터를 JSON형식으로 Request 하면 ID값을 반환하면서 Response함.

 

- DELETE 결과 화면

ARC를 이용해서 결과를 봄. 주소에 삭제할 ID값을 적어서 Request하면 삭제된 데이터의 ID값을 반환하면서 Response함.

 

'Spring Framework' 카테고리의 다른 글

타임라인서비스) Service 만들기  (0) 2021.07.21
타임라인서비스) Repository 만들기  (0) 2021.07.21
API-GET  (0) 2021.07.18
Lombok, DTO  (0) 2021.07.18
JPA) JPA 심화  (0) 2021.07.14