미소를뿌리는감자의 코딩

[Spring] Response Json 본문

강의수강/[Spring]

[Spring] Response Json

미뿌감 2024. 2. 29. 20:25
728x90

이번에는 json 형식으로 반환하는 방법에 대해서 알아보았다.

 

2가지 방법을 소개할 것인데, 하나는 직접 json 형태로 바꾸어주고 반환하는 방법이고, 다른 하나는 spring이 class를 json 형태로 변환하여 반환하는 방법이다.

 

1) 직접 json 형태로 바꾸어주고 반환하는 방법

// Content- Type: text/html
// Response Body
// {"name" : "Robbie", "age":95} 로 client에게 반환
@GetMapping("/json/string")
@ResponseBody
public String helloStringJson() {
    return "{\"name\":\"Robbie\",\"age\":95}";
}

 

Context- Type은 text/html 이다. 또한 직접 String 으로 적어주고, 이를 반환함을 알 수 있다.

그렇다. 사실상 이 방법은 잘 사용하지 않는다. 하나하나 다 적어줘야 하기 때문이다. 

어서 다음 방법을 알아보도록 하자.

 

2) Class를 json 형태로 자동 변환 반환

// Content-Type : application/json
// Response Body
//{"name" : "Robbie", "age":95}  위에는 text type, 여기는 application/json 형태
// Java의 객체를 Json 형태로 변환을 해준다. 반환하는.. 모든 것을 위에처럼 나타내기 힘드니까
@GetMapping("/json/class")
@ResponseBody
public Star helloClassJson() {
    return new Star("Robbie", 95);
}

 

이 방법은 Spring에서 알아서 class를 json 형태로 바꾸어서 반환하는 것이다.

따라서 Content-Type도 application/json 임을 알 수 있다.

 

반환 type이 Star 임을 확인할 수 있다.

 

Star.java

@Getter
public class Star {
    String name;
    int age;

    public Star(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public Star() {}
}

 

또한 return new Star("robbie", 95); 는 templates 폴더에 있는 html을 반환하는 것이 아니므로, 

@ResponseBody 또한 적어주는 것을 잊으면 안된다.

728x90