Light Blue Pointer
본문 바로가기
Developing/TIL(Develop)

데이터를 클라이언트에게 반환하는 방법

by Greedy 2023. 11. 6.

데이터를 클라이언트에게 반환하는 방법

프론트엔드 : 클라이언트 쪽 개발

백엔드 : 서버쪽 개발

느슨하게 결합하는 방식이 점점 더 많이 채택되고 있음

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 안 달아도 자동으로 적용된다

'Developing > 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