
@RestController @RequestMapping
@RestController // rest api 적용
@RequestMapping("/api") // 주소 매핑
public class RestApiController{
}
@<method>Mapping : method를 지정하고, url을 매핑해주는 역할@PathVariable @GetMapping(path = "/echo/{message}") public String echo( @PathVariable String message ){ System.out.println(message); return message.toUpperCase(); }
만약 url에 정의한 이름과 변수 이름이 다르다면@PathVariable(name="message") String msg
@RequestParam@GetMapping(path="/book") public void queryParam( @RequestParam String category, @RequestParam(name="issued_day") String issuedDay ){ System.out.println(category); System.out.println(issuedDay); }
쿼리파라미터가 많으면 객체로 지정하기@GetMapping(path="/book2") public void queryParam2( //단, 변수 이름의 형식(snake or camel)을 통일해야 한다. BookQueryParam bookQueryParam ){ System.out.println(bookQueryParam); }
이때 객체 파일은 다음과 같이 작성할 수 있다.@Data // lombok에 포함된 annotation > 변수의 getter, setter 만들어줌 @AllArgsConstructor // 모든 변수를 포함한 생성자 @NoArgsConstructor // 디폴트 생성자 // snake case 형태를 camel case 형태로 읽어올 수 있다. @JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class) public class UserRequest { private String userName; private Integer userAge; private String userEmail; private Boolean isKorean; @Override public String toString() { return "UserRequest{" + "userName='" + userName + '\'' + ", userAge=" + userAge + ", userEmail='" + userEmail + '\'' + ", isKorean=" + isKorean + '}'; } }
@RequestBody@PostMapping("/user") public UserRequest userPost(@RequestBody UserRequest userRequest){ System.out.println(userRequest); return userRequest; }
ResponseEntity : response 객체, status code, header등을 정의할 수 있다. @GetMapping("") public ResponseEntity user(){ var user = new UserRequest(); user.setUserName("hong"); user.setUserAge(10); user.setUserEmail("jj@jj.com"); log.info("user : {}", user); var response = ResponseEntity .status(HttpStatus.OK) .header("x-custom", "hi") .body(user); return response; } ```