본문 바로가기
개발공부하며 느낀 인생 공부

스프링부트에서 타입에 따른 데이터 전송방법(서버에서 프론트엔드 클라이언트로)

by 날파리1 2022. 8. 25.

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")));
  }
}

 

댓글