본문 바로가기

JS/ajax

[ajax] json 형식으로 데이터 주고 받기 with SpringBoot

컨트롤러에서 요청 받기 (Request)

AJAX 비동기 형태로 JSON 형식의 데이터를 보냈을 때

스프링부트 컨트롤러에서는 @RequestBody어노테이션을 적용한

Map 형태 또는 자바beans(dto,domain,entity...) 형태로 받는다.

// Map 형태
@PostMapping("test1")
public void method1(@RequestBody Map<String, Object> map) {
	System.out.println("map = " + map);
}

// JAVA Beans 형태(DTO, domain, Entity...)
@PostMapping("test2")
public void method1(@RequestBody TestDto testDto) {
	System.out.println("testDto" + testDto);
}

js object(자바스크립트 객체) -> json text 형태로 변환되는걸 직렬화(Serializtion) 라고한다.

즉 컨트롤러에서는 직렬화된 데이터를 받는다.

 

받은 컨트롤러에서는 json text -> js object  다시 객체형태를 가공해서 사용(Map, Java Beans)한다.

이걸 파싱(parse)이라고 한다.

 

js object(자바스크립트 객체) 형태

{name: "kim"}

 

json text 형태

'{"name": "son"}'

 

문자열 뿐만 아니라 정수, 실수, 논리, null, 객체, 배열 형태들도 가능하다.


컨트롤러에서 응답하기(Response)

요청을 받은걸 응답할때에는 @ResponseBody 어노테이션을 메소드위에 작성한다.

@ResponseBody의 return 값은 값 그 자체가 된다. 

@GetMapping("/getUser")
@ResponseBody // 여기에 어노테이션 작성
public String method3(){
    return "hello request"; // HTML 관리자 도구 -> 네트워크에서 보면 hellow request 로 응답된게 확인
}

추가 예시)

@GetMapping("/getUser")
@ResponseBody
public Map<String, Object> method3(){
    return Map.of("name", "son", "age", 30);
}

Map 형태로 return 하는 경우 JSON 형태로 응답 / 이때 직렬화된 데이터를 받음 (스프링부트가 직렬화해줌)

 

반응형

'JS > ajax' 카테고리의 다른 글

[ajax] 비동기 처리 - Axios  (0) 2023.10.25
[ajax]배열로 넘기기  (0) 2023.05.15
[ajax] 비동기 처리- JQuery  (0) 2023.02.24