작성글 저장

작성한 글을 저장하는 컨트롤러를 만들것이다. 복습겸 Http Method 종류부터 정리하고 넘어가자.

 

Http Method

GET, POST, PUT ,PATCH, DELETE, OPTIONS, HEAD, TRACE, CONNECT

 

위와 같은 9가지 종류가 있고 이 중 앞의 5가지를 주로 사용한다.

글 조회는 GET, 글 등록은 POST 로 한다.

 

초기 단계로 Hello 를 출력하는 컨트롤러부터 만들어보자.

우선 보낼 요청의 ContentType 을 생각해야하는데, 두가지 정도 생각해볼 수 있다.

  • application/x-www-form-urlencoded
  • application/json

 

두 방식의 차이점은 여기에 간략하게 정리해두었다. 여기서는 JSON 방식으로 보낼것이다.

 

PostController

데이터를 받는 DTO 객체 PostCreate 를 만들고 이 객체에 요청 데이터가 잘 받아지는지 확인해볼것이다.

이 테스트는 컨트롤러 통합 테스트이고 PostCreate 의 단위 테스트가 아니기 때문에

params 의 값은 로그를 찍어  확인해 본다.

@Slf4j
@RestController
public class PostController {

    @PostMapping("/posts")
    public String post(@RequestBody PostCreate params) {
        log.info("params = {}", params.toString());
        return "Hello";
    }
}

 

PostCreate

public class PostCreate {

    public String title;
    public String content;

    public PostCreate(String title, String content) {
        this.title = title;
        this.content = content;
    }

    @Override
    public String toString() {
        return "PostCreate{" +
            "title='" + title + '\'' +
            ", content='" + content + '\'' +
            '}';
    }
}

 


PostControllerTest

import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.*;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.*;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.*;

@WebMvcTest
class PostControllerTest {

    @Autowired
    private MockMvc mockMvc;

    @DisplayName("/posts 요청 시 Hello 를 출력한다.")
    @Test
    void post() throws Exception {
        mockMvc.perform(
        	post("/posts")
                	.contentType(MediaType.APPLICATION_JSON)
                	.content("{\"title\" : \"글 제목입니다\", \"content\" : \"글 내용입니다 하하\"}")
            )
            .andExpect(status().isOk())
            .andExpect(content().string("Hello"))
            .andDo(print());
    }
}

 

테스트는 성공하고 위 사진의 맨 윗줄의 params 에 값이 잘 담겼음을 확인할 수 있다.

 

참고자료 )

https://www.inflearn.com/course/%ED%98%B8%EB%8F%8C%EB%A7%A8-%EC%9A%94%EC%A0%88%EB%B3%B5%ED%86%B5-%EA%B0%9C%EB%B0%9C%EC%87%BC

 

호돌맨의 요절복통 개발쇼 (SpringBoot, Vue.JS, AWS) - 인프런 | 강의

단순히 애플리케이션 하나를 만드는데 끝나지 않습니다. Spring Boot를 활용한 백엔드부터 Vue.js 모던 프론트엔드 스택을 연동한 서비스 완성 A-Z를 보여드립니다., 🐯이제는 실전이다!🐯이 강의를

www.inflearn.com

 

+ Recent posts