rest는 서버의 응답이 json형식임을 나타낸다.
클라이언트 요청을 전달받는 코드를 controller라고 부르고
json만으로 돌려주는 것을 restcontroller라고 한다!
우리가 배우는 spring은 서버를 다루는 것이다.
api는 클라이언트와 서버가 서로 상호작용하는 창구!
controller을 따로 패키지로 만들어서 각자 객체에 따른 컨트롤러를 만들어준다.
그냥 일반 클래스로 알고있는데, 아직 JSON으로 응답하는 자동응답기임을 알려줘야한다.
어떻게 ?
어노테이션이라는 것을 사용해서 @RestController임을 붙여줘야한다.
@RESTCONTROLLER임을 붙여줌으로써 일반 클래스가 아니라, 응답하는데 최적화 된 빵틀이 된 것이다.
@RestController
public class CourseController {
@GetMapping("/courses")
public Course getCourses() {
Course course = new Course();
course.setTitle("웹개발의 봄 스프링");
course.setDays(35);
course.setTutor("남병관");
return course;
}
}
자 이렇게 get요청을 매핑해줬는데 Course메소드는 어떻게 실행될까 ?
우리는 메소드만 잘 만들어주고, 매핑만 잘해주면 원하는 요청이 들어왔을때 스프링이 알아서 다해준다.
따로 설정은 아래의 한줄이면 설정이 가능하다. 그런데 처음에 dependency에서 추가해줘서 따로 설정해줄필요가 없다.
implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
자바를 통해서 sql형식으로 데이터를 다를수있다!!
추가로 spring에서 domain 또는 entity라는 녀석들은 mysql에서 테이블에 대응되는 녀석들이 있다.
domain 폴더 안에 course와 courseRepo를 같이 만들어준다.
이때 repository는 인터페이스로 만들어줘야한다.
인터페이스는 클래스에서 멤버가 빠진 메소드의 모음집으로 보면 된다. 메소드가 잔뜩있는 녀석이구나를 생각할 수 있다.
여기서 public class course위에 @entity를 써주면서 course가 테이블 역할을 할 것임을 명시해주면서 스프링에게 알려준다. 그위에 @noargsconstructor은 arg는 메소드 만들때 쓰는 파라미터인데, 없어도 기본생성자를 자동으로 넣어줘라 라는 뜻이다.
자바코드를 통해서 테이블을 만들어가는 과정이다.
위의 SQL과 같다고 보면 된다.
setter은 repository에서 자동으로 해주기 때문에 getter만 한다.