2023.02.23 - [๐ข Study/Spring boot] - 2. @RequestMapping - @GetMapping, @DeleteMapping
RequestMappingHandlerMapping
DispatcherServlet์ด ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ ๋๋ RequestMappingHandlerMapping ์ปดํฌ๋ํธ์ ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ํด๋ผ์ด์ธํธ์ ์์ฒญ๊ณผ ๋งค์นญ๋๋ ํธ๋ค๋ฌ ๋ฉ์๋๋ฅผ ์กฐํํ ์ ์๋ค.
1. @GetMapping
2. @DeleteMapping
3. @PostMapping
4. @PutMapping
PostMapping, PutMapping ์ ๋ํ ์ด์ ๋ ์๊ธ์์ ์ค๋ช ํ GetMapping, DeleteMapping ์ ๋ํ ์ด์ ๊ณผ ์ฌ์ฉ๋ฒ, ์์ฑ์ ๋์ผํ๋ค.
PostMapping Example
@PostMapping(path = "/hotels/{hotelId}/rooms")
public ResponseEntity<HotelRoomIdResponse> createHotelRoom(
@PathVariable Long hotelId,
@RequestBody HotelRoomRequest hotelRoomRequest
) {
System.out.println(hotelRoomRequest.toString());
MultiValueMap<String, String> headers = new LinkedMultiValueMap<>();
headers.add(HEADER_CREATED_AT, DATE_FORMATTER.format(ZonedDateTime.now()));
HotelRoomIdResponse body = HotelRoomIdResponse.from(1_002_003_004L);
return new ResponseEntity(body, headers, HttpStatus.OK);
}
@RequestBody ์ ๋ํ ์ด์ ์ ํด๋ผ์ด์ธํธ์์ ์ ์กํ ์์ฒญ ๋ฉ์์ง์ ๋ฐ๋๋ฅผ ์ธ๋ง์ ๋งํ์ฌ ์๋ฐ ๊ฐ์ฒด๋ก ๋ณํํ๋ค.
์ ๋ํ ์ด์ ์ด ์ ์๋ ์ธ์์ ํด๋์ค ํ์ ์ ์ฌ์ฉํ๋ฏ๋ก HotelRoomRequest๊ฐ์ฒด๋ก ์ธ๋ง์ ๋ง ๋๋ค.
๋ณํ๋ ๊ฐ์ฒด๋ hotel RoomRequest ์ธ์์ ์ฃผ์ ๋๋ค.
### REST-API ์์ฒญ
POST /hotels/{hotelId}/rooms
{
"roomNumber": "west-3928",
"roomtype": "double",
"originalPrice": "150.00"
}
@Getter
@ToString
public class HotelRoomRequest {
private String roomNumber;
private HotelRoomType roomType;
private BigDecimal originalPrice;
}