본문으로 바로가기

@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