@RestController
@RequestMapping("/api/v1")
public class ResponseApiController {
@GetMapping("")
public UserRequest user(){
var user = new UserRequest();
user.setUserName("홍길동");
user.setUserAge(10);
user.setEmail("HONG@GMAIL.COM");
return user;
}
}
/* 응답 결과
dto에서 JsonNaming 을 제거한다면 camelCase로 응답이 올것이다.
{
"user_name": "홍길동",
"email": "HONG@GMAIL.COM",
"is_korean": null,
"user_age": 10
}
*/
String 응답
반환형 String
반환값을 toString()
plain text 값으로 UserRequest(userName=홍길동, UserAge=10, email=HONG@GMAIL.COM, isKorean=null) 응답
@Slf4j
@RestController
@RequestMapping("/api/v1")
public class ResponseApiController {
@GetMapping("")
public String user(){
var user = new UserRequest();
user.setUserName("홍길동");
user.setUserAge(10);
user.setEmail("HONG@GMAIL.COM");
log.info("user:{}",user);
return user.toString();
}
}
ResponseEntity custom한 응답 내리기!
@Slf4j
@RestController
@RequestMapping("/api/v1")
public class ResponseApiController {
@GetMapping("")
public ResponseEntity<UserRequest> user(){
var user = new UserRequest();
user.setUserName("홍길동");
user.setUserAge(10);
user.setEmail("HONG@GMAIL.COM");
log.info("user:{}",user);
var response = ResponseEntity
.status(HttpStatus.NOT_FOUND)
.header("x-custom","h1")
.body(user);
return response;
}
}
@GetMapping("")
// 위에와 아래는 같은 기능의 코
@RequestMapping(path = "", method = RequestMethod.GET)
@RequestMapping(path = "") 만 한다면 모든 REST 요청 받을 수 있음. 사용 X
@Controller 사용시
@Slf4j
@Controller
@RequestMapping("/api/v1")
public class ResponseApiController {
@GetMapping("")
@ResponseBody // @Controller 일 때 json으로 응답
public UserRequest user(){
var user = new UserRequest();
user.setUserName("홍길동");
user.setUserAge(10);
user.setEmail("HONG@GMAIL.COM");
log.info("user:{}",user);
var response = ResponseEntity
.status(HttpStatus.NOT_FOUND)
.header("x-custom","h1")
.body(user);
return user;
}
}
@Controller 사용시에 @ResponseBody를 넣어주지 않고 user를 그냥 return 해준다면 html 형식으로 응답 받아야 하는 Controller이기에 404 NOT Found가 뜬다.
그래서 json 형식으로 응답해 줄 수 있는 @ResponseBody 어노테이션을 넣어줘야 한다.