Spring
API - GET, POST(ARC 테스트)
코린이 연대기
2020. 11. 17. 18:18
@GetMapping("주소") 를 적어 url에 "주소" 값을 입력하여 받아오는 방식이다.(조회)
package com.sparta.week02_hwk.controller;
import com.sparta.week02_hwk.domain.Course;
import com.sparta.week02_hwk.domain.CourseRepository;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RequiredArgsConstructor//lombok//final 변수 포함하는 생성자 자동생성
@RestController//Json 형식으로 반환
public class CourseController {
private final CourseRepository courseRepository;
@GetMapping("/api/courses")
public List<Course> getCourses() {
return courseRepository.findAll();
}
}
ARC (Advenced REST Client) 출력
------------
@PostMapping//생성
Controller를 수정해주면 new Couuse(requestDto) 의 requestDto에 빨간줄이 생긴다.
에러메시지 com.sparta.week02_hwk.domain.CourseRequestDto)'
Course에 CourseRequestDto를 파라미터로 갖는 생성자가 없다! 그럼 만들어주자
public class CourseController {
private final CourseRepository courseRepository;
private final CourseService courseService;
// PostMapping을 통해서, 같은 주소라도 방식이 다름을 구분합니다.
@PostMapping("/api/courses")//생성
public Course createCourse(@RequestBody CourseRequestDto requestDto) {
// RequestBody 는 API에서 데이터를 잘 주고받으려면 필요하다. RestCon@RestController
// 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();
}
}
Course.java 에 아래와 같은 생성자를 추가해준다. 그럼 위의 에러 메시지가 없어진다./ 서버스타트!
public Course(CourseRequestDto requestDto){
this.title = requestDto.getTitle();
this.name = requestDto.getName();
}
이제 ARC로 테스트 해보면? 이런 에러메시지가 나온다...!
Get방식은 url에 매핑된 그대로 받아오는 반면 Post 방식은 받아오는 방법이 엄격히 정해져있다. (자세한건 다음주차)
우선 받아오는 방식을 살펴보자 그중 우린 json이라는 가장 보편화 된 타입으로 데이터를 보내보자
HEADERS 에서 +버튼을 눌러 Content-Type은 json형식이라고 명시해주고
BODY에서도 json으로 타입을 명시해주고 Post로 보낼 내용을 하단에 작성해주자
그 상태에서 SEND 해주면 id 값이 2로 방금 보낸 값이 들어간다. 다시 메소드를 GET으로 바꿔 들어온 값을 확인해 보자
POST로 보낸 값이 추가된 데이터 전체를 볼 수있다!