@ResponseBody
: 데이터를 HttpMessageConverter를 사용해 응답 본문 메시지로 보낼 때 사용한다.
: @RestController 사용시 자동으로 모든 핸들러 메소드에 적용한다.
ResponseEntity
: 응답 헤더 상태 코드 본문을 다루고 싶은 경우에 사용한다.
package com.example.demo;
import javax.validation.Valid;
import org.springframework.http.ResponseEntity;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/events")
public class EventApi {
@PostMapping
public ResponseEntity<Event> createEvent(@RequestBody @Valid Event event ,BindingResult bindingResult) {
if(bindingResult.hasErrors()) {
return ResponseEntity.badRequest().build();
}
return ResponseEntity.ok(event);
}
}
<Test Code>
package com.example.demo;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultHandlers.print;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.jsonPath;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.web.servlet.AutoConfigureMockMvc;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.http.MediaType;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import com.fasterxml.jackson.databind.ObjectMapper;
@RunWith(SpringRunner.class)
@SpringBootTest
@AutoConfigureMockMvc
public class EventApiTest {
@Autowired
ObjectMapper objectMapper;
@Autowired
MockMvc mockMvc;
@Test
public void createEvent() throws Exception{
Event event = new Event();
event.setName("sungwon");
event.setLimit(-20);
String json = objectMapper.writeValueAsString(event);
mockMvc.perform(post("/api/events")
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(json))
.andDo(print())
.andExpect(status().isBadRequest());
}
}
'Spring > SpringMVC' 카테고리의 다른 글
[Spring MVC] @InitBinder (0) | 2019.08.24 |
---|---|
[Spring MVC] @ModelAttribute 와 Model (0) | 2019.08.23 |
[Spring MVC] MultipartFile (0) | 2019.08.20 |
[Spring MVC] Flash Attributes (0) | 2019.08.20 |
[Spring MVC] RedirectAttributes (0) | 2019.08.19 |