본문 바로가기

Spring

API - PUT, DELETE(ARC 테스트)

나머지 PUT과 DELETE도 해보자

우선 contrloller에 가서 @PutMapping을 작성해주자

(작성 후 DB는 h2니까 서버재시작으로 DB값을 초기화 해주고 ARC를 통해 넘어오는 값을 확인 해보자)

@RequiredArgsConstructor//lombok//final 변수 포함하는 생성자 자동생성
@RestController//Json 형식으로 반환
public class CourseController {

    private final CourseRepository courseRepository;
    private final CourseService courseService;

    // PostMapping을 통해서, 같은 주소라도 방식이 다름을 구분합니다.
    @PostMapping("/api/courses")
    public Course createCourse(@RequestBody CourseRequestDto requestDto) {
        // requestDto 는, 생성 요청을 의미합니다.
        // 강의 정보를 만들기 위해서는 강의 제목과 튜터 이름이 필요하잖아요?
        // 그 정보를 가져오는 녀석입니다.

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

        // JPA를 이용하여 DB에 저장하고, 그 결과를 반환합니다.
        return courseRepository.save(course);
    }
    @GetMapping("/api/courses")//조회
    public List<Course> getCourses() {
        return courseRepository.findAll();
    }

    @PutMapping("/api/courses/{id}")//수정할 id 값을 받아온다
    public Long updateCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto) {
        //@PathVariable : id에 {id}값을 받아서 넣어줍니다.
        //@RequestBody : json 으로 받아오는 데이터 를 받아 넣어준다.
        //@RestController 는 json 이니까//@Controller 면 @ResponseBody
        return courseService.update(id, requestDto);
    }
}

 

GET상태에서 실행해 보면 id가 1인 값만 출력이 된다. 여기서 PUT으로 정보를 변경해보자.

 

메서드를 PUT으로 바꾸고 URL 맨 마지막에 /{id}가 될 값(여기서는 1)을 작성해준다.
BODY에는 변경할 값을 json 형식으로 아래와 같이 작성해준다.

(그럼 맨아래 RESPONSE HEADERS에서 id가 1인 값을 변경했다는 의미로 1을 반환해준다.)

 

 

 

 

이후 다시 GET으로 바꾼후 URL에서 PUT을 위해 변경할 아이디 값을 명시해줬던 (/1)을 지워주면 변경된 화면이 짠! 

 

마지막으로 삭제!! Controller에서 매핑 아래 하단 코드를 작성해주면 되는데

deleteById는 repository의 내장 함수다. 

deleteById는 아무것도 반환 하지 않기 때문에 

retturn은 그냥 id를 반환해준다.

(이후 ARC에서 메서드를 DELETE로 놓고 id값이 1로 출력되는걸 확인하고 GET으로 바꿔 확인해 보자)

    @DeleteMapping("/api/courses/{id}")
    public Long deleteCourse(@PathVariable Long id, @RequestBody CourseRequestDto requestDto){
        courseRepository.deleteById(id); 
        // deleteById는 repository의 내장 함수
        return id;
    }

그려면 짠 데이터가 없는걸 볼 수있다.

 

'Spring' 카테고리의 다른 글

API - GET, POST(ARC 테스트)  (0) 2020.11.17
API 기초  (2) 2020.11.16
Lombok, DTO  (0) 2020.11.15