@GetMapping
: get 방식으로 url 매핑
@PostMapping
: post 방식으로 url 매핑
@RequestMapping
: 현재 클래스 내에 존재하는 모든 메소드 url 의 공통적인 부분 매핑
path
: url 경로
"/users/{id}"
: id 위치에 담긴 값을 id 로 매칭함@PathVariable
로 파라미터에 들어온 값과 매개변수와 매칭@GetMapping(path = "/users/{id}")
public ResponseEntity<User> pathVariable(@PathVariable Long id) {
User user = new User(id, "이름", "email");
return ResponseEntity.ok().body(user);
}
"/patterns/?"
: 임의의 한 글자를 허용함@DisplayName("Uri Pattern - pattern")
@Test
void pattern() {
RestAssured.given().log().all()
.accept(MediaType.APPLICATION_JSON_VALUE)
.when().get("/uri-pattern/patterns/a")
.then().log().all()
.statusCode(HttpStatus.OK.value())
.body(is("pattern"));
RestAssured.given().log().all()
.accept(MediaType.APPLICATION_JSON_VALUE)
.when().get("/uri-pattern/patterns/b")
.then().log().all()
.statusCode(HttpStatus.OK.value())
.body(is("pattern"));
}
"/patterns/*"
: 임의의 여러 글자를 허용함"/patterns/**"
: 임의의 여러 경로를 허용함@DisplayName("Uri Pattern - pattern multi")
@Test
void patternStars() {
RestAssured.given().log().all()
.accept(MediaType.APPLICATION_JSON_VALUE)
.when().get("/uri-pattern/patterns/multi")
.then().log().all()
.statusCode(HttpStatus.OK.value())
.body(is("pattern-multi"));
RestAssured.given().log().all()
.accept(MediaType.APPLICATION_JSON_VALUE)
.when().get("/uri-pattern/patterns/all")
.then().log().all()
.statusCode(HttpStatus.OK.value())
.body(is("pattern-multi"));
RestAssured.given().log().all()
.accept(MediaType.APPLICATION_JSON_VALUE)
.when().get("/uri-pattern/patterns/all/names")
.then().log().all()
.statusCode(HttpStatus.OK.value())
.body(is("pattern-multi"));
}
accept
: 요청 시 헤더에 담긴 데이터의 타입이어야 하는 값contentType
: 응답 시 응답하는 데이터의 타입이어야 하는 값produces
: controller 에서 생성하는 content-type 을 제한한다. 응답 을 보낼 때의 데이터의 타입을 지정
consumes
: controller 에서 소비하는 content-type 을 제한한다. 요청 을 보낼 때 헤더에 담긴 데이터의 타입을 지정
params
: url 의 파라미터를 지정함 예) "name=hello"
→ name 에 hello 가 들어온 경우에 해당 메소드에 매칭
headers
: 헤더의 특정 값을 지정함 예) "HEADER=hi"
→ 헤더에 HEADER 값이 hi 일 경우에 해당 메소드에 매칭
@GetMapping("/users")
public ResponseEntity<List<User>> requestParam(String name) {
List<User> users = Arrays.asList(
new User(name, "email"),
new User(name, "email")
);
return ResponseEntity.ok().body(users);
}
→ /users/name=”test”
로 들어왔을 때 매개변수 name
에 “test” 가 입력됨
@GetMapping("/users")
public ResponseEntity<List<User>> requestParam(@RequestParam("name") String userName) {
List<User> users = Arrays.asList(
new User(userName, "email"),
new User(userName, "email")
);
return ResponseEntity.ok().body(users);
}
→ /users/name=”test”
로 들어왔을 때 매개변수 userName
에 “test” 가 입력됨
@ModelAttribute
: 매개변수로 자바 객체를 받아옴, @RequestParam
과 마찬가지로 생략이 가능하다@PostMapping("/owners/{ownerId}/pets/{petId}/edit")
public String processSubmit(@ModelAttribute Pet pet) {
// method logic...
}
@RequestBody
: 매개변수로 자바 객체를 받아옴@PostMapping("/accounts")
public void handle(@RequestBody Account account) {
// ...
}