[백엔드 강의] 맛집 API 구현하기

이나형·2024년 9월 25일
1
post-thumbnail

이 포스팅은 인프런 강의 중 쥬쥬님의 '쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS' 에 올라온
코드 및 사진 이미지 모두 해당 강의를 참고하였습니다.

(인프런)쥬쥬와 함께 하루만에 시작하는 백엔드 - 스프링, 도커, AWS링크


이전 포스팅에서는 맛집 API의 기본 정의와 함께 API가 정상적으로 연결되고 동작하는지 확인하는 단순한 상태에서 코드를 작성했었다.

이번에는 실제로 API가 클라이언트로부터 데이터를 받아 처리하고, 서버에서 데이터를 반환하는 구조로 확장하여 구현했다. 이를 통해 서버와 클라이언트가 실질적인 데이터를 주고받는 방식을 살펴볼 수 있다.



CreateAndEditRestaurantRequestMenu 클래스

이 클래스는 각 메뉴의 이름과 가격 정보를 담아, 맛집의 메뉴 리스트를 구성하는 객체이다.


@Getter
@AllArgsConstructor
public class CreateAndEditRestaurantRequestMenu {
    private final String name;   // 메뉴 이름
    private final Integer price;  // 메뉴 가격
}

  • name: 메뉴의 이름을 저장하는 필드
  • price: 메뉴의 가격을 저장하는 필드.



CreateAndEditRestaurantRequest 클래스


이 클래스는 새로운 맛집을 생성하거나, 기존 맛집의 정보를 수정할 때 클라이언트로부터 전송받는 요청 데이터를 담는 객체이다.

맛집의 이름, 주소, 메뉴 리스트 등을 포함하고 있으며, 이를 통해 서버는 맛집의 기본 정보와 메뉴 정보를 한 번에 처리할 수 있다.


@Getter
@AllArgsConstructor
public class CreateAndEditRestaurantRequest {
    private final String name;   // 맛집 이름
    private final String address;  // 맛집 주소
    private final List<CreateAndEditRestaurantRequestMenu> menus;  // 맛집 메뉴 리스트
}

  • name: 맛집의 이름을 저장하는 필드
  • address: 맛집의 주소를 저장하는 필드
  • menus: 맛집의 메뉴 리스트를 저장하는 필드로, CreateAndEditRestaurantRequestMenu 타입의 객체 리스트로 구성된다.



RestuarantAPI


이 API는 맛집의 생성, 수정, 삭제, 조회 기능을 제공하는 API이다. 클라이언트가 맛집 정보를 요청하고 서버는 이를 처리하여 데이터베이스에 저장하거나 반환하는 역할을 한다.

맛집 리스트 가져오기 API


@GetMapping("/restaurants")
public String getRestaurants(){
    return "This is getRestaurants";
}

이 API는 등록된 모든 맛집 정보를 가져오는 역할을 한다.

간단하게 /restaurants 경로로 GET 요청을 보내면, 서버는 등록된 모든 맛집 정보를 반환하게 된다.

현재는 단순한 문자열을 반환하고 있지만, 실제 응용에서는 데이터베이스체 저장된 맛집 리스트를 JSON 형식으로 반환하게 할 예정이다.



특정 맛집 정보 가져오기 API


@GetMapping("/restaurant/{restaurantId}")
public String getRestaurant(@PathVariable Long restaurantId){
    return "This is getRestaurant " + restaurantId;
}

이 코드는 특정 맛집의 ID를 이용해 해당 맛집의 상세 정보를 가져오는 API이다.

PathVariable 형식을 사용하여 URL 경로에서 restaurantId를 받아와서 해당 맛집 정보를 반환한다.



맛집 생성 API


이 부분은 새로운 맛집을 등록하는 API이다. 맛집 이름, 주소, 메뉴 정보를 포함한 데이터를 요청 본문으로 받아서 처리한다.
@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는 기존에 등록된 맛집 정보를 수정하는 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();
}

  • @PutMapping을 사용하여 데이터를 수정할 때 사용한다.



맛집 삭제 API


이 API는 등록된 맛집을 삭제하는 API이다.
맛집 ID를 경로로 받아 해당 맛집을 삭제한다.


@DeleteMapping("/restaurant/{restaurantId}")
public String deleteRestaurant(@PathVariable Long restaurantId){
    return "This is deleteRestaurant, " + restaurantId;
}
  • @DeleteMapping을 통해 특정 맛집을 삭제할 수 있다.
profile
정도를 걷는 개발자

0개의 댓글