이 포스팅은 인프런 강의 중 쥬쥬님의 '쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS' 에 올라온
코드 및 사진 이미지 모두 해당 강의를 참고하였습니다.
(인프런)쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS링크
이전 포스팅에서는 맛집 API의 기본 정의와 함께 API가 정상적으로 연결되고 동작하는지 확인하는 단순한 상태에서 코드를 작성했었다.
이번에는 실제로 API가 클라이언트로부터 데이터를 받아 처리하고, 서버에서 데이터를 반환하는 구조로 확장하여 구현했다. 이를 통해 서버와 클라이언트가 실질적인 데이터를 주고받는 방식을 살펴볼 수 있다.
이 클래스는 각 메뉴의 이름과 가격 정보를 담아, 맛집의 메뉴 리스트를 구성하는 객체이다.
@Getter
@AllArgsConstructor
public class CreateAndEditRestaurantRequestMenu {
private final String name; // 메뉴 이름
private final Integer price; // 메뉴 가격
}
맛집의 이름, 주소, 메뉴 리스트 등을 포함하고 있으며, 이를 통해 서버는 맛집의 기본 정보와 메뉴 정보를 한 번에 처리할 수 있다.
@Getter
@AllArgsConstructor
public class CreateAndEditRestaurantRequest {
private final String name; // 맛집 이름
private final String address; // 맛집 주소
private final List<CreateAndEditRestaurantRequestMenu> menus; // 맛집 메뉴 리스트
}
@GetMapping("/restaurants")
public String getRestaurants(){
return "This is getRestaurants";
}
이 API는 등록된 모든 맛집 정보를 가져오는 역할을 한다.
간단하게 /restaurants 경로로 GET 요청을 보내면, 서버는 등록된 모든 맛집 정보를 반환하게 된다.
현재는 단순한 문자열을 반환하고 있지만, 실제 응용에서는 데이터베이스체 저장된 맛집 리스트를 JSON 형식으로 반환하게 할 예정이다.
@GetMapping("/restaurant/{restaurantId}")
public String getRestaurant(@PathVariable Long restaurantId){
return "This is getRestaurant " + restaurantId;
}
이 코드는 특정 맛집의 ID를 이용해 해당 맛집의 상세 정보를 가져오는 API이다.
PathVariable 형식을 사용하여 URL 경로에서 restaurantId를 받아와서 해당 맛집 정보를 반환한다.
@PostMapping("/restaurant")
public String createRestaurant(@RequestBody CreateAndEditRestaurantRequest request){
return "This is createRestaurant, name= " + request.getName() + " address= " + request.getAddress()
+ ", menu[0].name= " + request.getMenus().get(0).getName() + ", menu[0].price= " + request.getMenus().get(0).getPrice();
}
@RequestBody로 클라이언트에서 전달받은 요청 데이터를 CreateAndEditRestaurantRequest 객체로 변환하여 처리한다.
등록된 첫 번째 메뉴의 이름과 가격을 함께 확인할 수 있다.
이 맛집 수정 API는 기존에 등록된 맛집 정보를 수정하는 API이다. 맛집 ID와 새로운 정보를 함꼐 요청받아 해당 정보를 수정한다.
@PutMapping("/restaurant/{restaurantId}")
public String editRestaurant(@PathVariable Long restaurantId, @RequestBody CreateAndEditRestaurantRequest request){
return "This is editRestaurant, " + restaurantId + " name= " + request.getName() + ", address= " + request.getAddress();
}
이 API는 등록된 맛집을 삭제하는 API이다.
맛집 ID를 경로로 받아 해당 맛집을 삭제한다.
@DeleteMapping("/restaurant/{restaurantId}")
public String deleteRestaurant(@PathVariable Long restaurantId){
return "This is deleteRestaurant, " + restaurantId;
}