개발공부하며 느낀 인생 공부
스프링부트에서 타입에 따른 데이터 전송방법(서버에서 프론트엔드 클라이언트로)
날파리1
2022. 8. 25. 11:22
1. String 이 아닌 List 나 Array 로 return 을 하면 어떻게 서버에 출력될까?
기존에 스트링값으로 html 양식을 맞추어서 (프론트엔드 + 백엔드 혼합형) 바로 웹으로 쏴주던걸 서버와 클라이언트가 보는 뷰를 분리해서 서버로 데이터가 어떻게 가나 보았다.
package com.hoonstudio.board.controllers;
import org.springframework.web.bind.annotation.*;
import java.util.*;
@RestController
public class WelcomeController {
private List<String> welcomes = new ArrayList<>();
@GetMapping("/")
public List<String> home() {
String welcome = "Hi";
welcomes.add(welcome);
return welcomes;
}
}
아래 처럼 리스트나 배열은 [ ] 에 정보가 담겨서 나온다. (자바스크립트는 [ ] 을 배열로 취급하니까)

생성해준 클래스의 객체는 중괄호 { } 에 담겨서 각각의 매개변수가 전달된다. ( 자바스크립트는 { } 를 객체로 취급)
키와 값이 있고 ""로 이어져있는 Json 스타일로 맞춰준다..? 왜 인지는 모르겠다.

주의 할 것 !! 반드시 내가 정의한 클래스의 Getter 가 정의되어 있어야한다.
그리고 게터의 이름도 바꾸면 안됨 get{매개변수명} 형식이어야함
그래서 리스트로 전달해도
@RestController
public class PostController {
private List<PostDto> posts = new ArrayList<>();
@GetMapping("/posts")
public List<PostDto> list() {
PostDto postDto = new PostDto(1L,"Ahshal","Post #1","...");
posts.add(postDto);
return posts;
}
테스트 코드 통과!
@WebMvcTest
class PostControllerTest {
@Autowired
private MockMvc mockMvc;
@Test
void list() throws Exception {
mockMvc.perform(MockMvcRequestBuilders.get("/posts"))
.andExpect(status().isOk())
.andExpect(content().string(
containsString("Post #1")));
}
}