2022.09.16 - [공부/Spring (Sparta) -] - API, JS
데이터를 서버에서 전달받는 형식이 JSON이라는것을 알 수 있었다.
이 때 JSON형태로 데이터를 반환하기 위해 RestController를 사용한다.
REST란
서버의 응답이 JSON형식임을 나타낸다.
= HTML, CSS, JS등을 주고받을 때는 REST를 붙이지 않는다.
Controller란
클라이언트의 요청을 전달받는 코드를 말한다.
이 중 JSON만을 돌려주는 것을 RestController라고 하는 것 '~'
그럼 RestController를 만들어보자.
이 때 '@'로 시작하는 것들은 Spring 에서 자주 사용하는 Annotation이라는 것으로, 자바 소스코드에 추가하여 사용할 수 있는 메타데이터의 일종이다.
예를 들어 Profile class 를 만들 때
package com.eunki96.test01;
public class Profile {
private String name;
private int age;
private String hobby;
public Profile(){
}
public Profile(String name, int age, String hobby){
this.name = name;
this.age = age;
this.hobby = hobby;
}
//Getter
public String getName(){
return this.name;
}
public int getAge(){
return this.age;
}
public String getHobby(){
return this.hobby;
}
//Setter
public void setName(String name){
this.name = name;
}
public void setAge(int age){
this.age = age;
}
public void setHobby(String hobby){
this.hobby = hobby;
}
}
에서 Getter Setter 부분을 일일이 만들기 귀찮으므로,
@Getter, @Setter를 이용해보면 다음과 같이 된다.
package com.eunki96.test01;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
public class Profile {
private String name;
private int age;
private String hobby;
public Profile(){
}
public Profile(String name, int age, String hobby){
this.name = name;
this.age = age;
this.hobby = hobby;
}
}
Annotation을 사용하니 확 줄어들었다. 기능도 동일하다.
너무 편리한것..!
그럼 이어서 ProfileController를 만들어보자.
package com.eunki96.test01.controller;
import com.eunki96.test01.Profile;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class ProfileController {
@GetMapping("/profiles")
public Profile getProfile(){
Profile profile = new Profile();
profile.setName("정은기");
profile.setAge(26);
profile.setHobby("만화보기");
return profile;
}
}
@RestController = @Controller + @ResponseBody
@Controller 어노테이션은 기본적으로 view페이지를 찾아서 보여준다.
그리고 REST API의 경우는 각 클래스 메소드마다 @ResponseBody를 추가해서 데이터를 반환하도록 해주었다.
@RestController를 이용하면 알아서 view가 아니라 데이터를 그대로 넘겨주게 된다.
@GetMapping
브라우저에서 GET 방식으로 정보를 요청할 때,
위 예제에서는 주소 뒷부분이 "/profiles"일 경우 getProfile 메소드를 실행한다.
'Spring > Spring 정리' 카테고리의 다른 글
API - 2 (GET, POST) (0) | 2022.09.21 |
---|---|
DTO (2) | 2022.09.19 |
JPA - 2 /CRUD로 행복회로 돌려보기(실습) (0) | 2022.09.18 |
JPA - 1 (0) | 2022.09.17 |
API - 1 (JSON) (0) | 2022.09.16 |