데이터를 클라이언트에게 반환하는 방법
프론트엔드 : 클라이언트 쪽 개발
백엔드 : 서버쪽 개발
느슨하게 결합하는 방식이 점점 더 많이 채택되고 있음
AJAX 로 요청이 들어오면
JSON 데이터 요청해서 받아와본다
response 패키지 만듦→ResponseController 클래스 만듦
@Controller
public class ResponseController {
}
@Controller
@RequestMapping("/response")
public class ResponseController {
//Response Body
//{"name":"Margot","age":33}
@GetMapping("/json/string")
@ResponseBody
public String helloStringJson() {
return "{\\"name\\":\\"Margot\\",\\"age\\":33}"; //유사 JSON 형태로 반환
}
}
@GetMapping("/json/class")
public Star helloClassJson(){
return null;
}
일단 return값이 null 인 함수 만들어봄
Star 클래스 만들어줌
package com.sparta.springmvc.response;
import lombok.Getter;
@Getter
public class Star {
String name;
int age;
public Star(String name, int age) {
this.name = name;
this.age = age;
}
public Star() {}
}
아까 만든 메서드 이렇게 수정
@GetMapping("/json/class")
@ResponseBody
public Star helloClassJson(){
return new Star("Margot",33);
}
Content-Type : application/json Response Body {"name":"Margot","age":33}:
아까 메서드는 Text 형태로 넘어가는데 얘는 application/json 형태로 넘어감 그 이유 : 클라이언트는 자바스크립트인데 자바 객체 형태를 이해를 할 수가 없다고 함, Spring이 자바 객체를 자동으로 JSON 형태로 변환해준다고 함
@ResponseBody의 역할 : 그냥 @Controller만 달려 있을때 String 값을 반환을 하면 그 html을 templates에서 찾는데 html이 아니고 데이터를 반환하고 싶을때는 @ResponseBody를 달아줘야 함
Postman으로 실행하니까 잘 나온다
response→ ResponseRestController 클래스 만듦
package com.sparta.springmvc.response;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/response/rest")
public class ResponseRestController {
// [Response header]
// Content-Type: text/html
// [Response body]
// {"name":"Robbie","age":95}
@GetMapping("/json/string")
public String helloStringJson() {
return "{\\"name\\":\\"Robbie\\",\\"age\\":95}";
}
// [Response header]
// Content-Type: application/json
// [Response body]
// {"name":"Robbie","age":95}
@GetMapping("/json/class")
public Star helloClassJson() {
return new Star("Robbie", 95);
}
}
RestController = Controller + ResponseBody
@ResponseBody 안 달아도 자동으로 적용된다
'TIL(Develop)' 카테고리의 다른 글
Path Variable과 Request Param (0) | 2023.11.06 |
---|---|
Jackson이란 무엇일까 (0) | 2023.11.06 |
정적페이지와 동적페이지 (1) | 2023.11.03 |
Controller이해하기 (0) | 2023.11.02 |
Spring MVC (0) | 2023.11.02 |