Car management API

차량 관리 API 설계

개요

한 자동차 판매 관리 시스템의 백엔드 API를 설계하고자 한다. 관리 대상은 차량이며, 각 차량은 다음의 속성을 가진다:

  • 브랜드 (brand)

  • 모델명 (model)

  • 색상 (color)

  • 연비 (gasEconomy) – km/l

  • 추가 장비 목록 (accessories) – 문자열 리스트

다음 요구사항을 만족하는 REST API를 설계하라.

요구사항

  • 차량 목록 조회 API

    • 모든 차량 데이터를 JSON 형식으로 조회할 수 있어야 한다.

  • 차량 필터링 및 정렬 API

    • 차량 목록을 아래 조건으로 필터링할 수 있어야 한다:

      • 브랜드 (brand)

      • 색상 (color)

      • 연비 범위 (gasEconomy[min, max])

      • 특정 장비 포함 여부 (accessories 리스트 중 일부 포함)

    • 정렬 조건:

      • 연비 기준 오름차순 / 내림차순

      • 브랜드 이름 알파벳 순

    • 필터 조건은 Query Parameter로 전달

  • 차량 등록 API

    • 새로운 차량 정보를 등록할 수 있어야 하며, 유효성 검증이 포함되어야 한다.

    • 중복 차량은 등록되지 않도록 처리할 것 (brand + model + color 조합)

  • 차량 삭제 API

    • 차량 ID 기준으로 삭제할 수 있어야 하며, 없는 ID 요청 시 적절한 에러를 반환해야 한다.

  • 차량 상세 조회 API

    • 특정 차량의 상세 정보를 차량 ID로 조회할 수 있어야 한다.

1. 엔드포인트

  • 차량 목록 조회 API (GET) /cars

  • 차량 필터링 및 정렬 API (GET) /cars?brand={brand}&color={color}&mingaseconomy={min}&maxgaseconomy={max}&includeacc={includeacc}&page={page}&size={size}&sort={sort}&type={type}

  • 차량 등록 API (POST) /cars

  • 차량 삭제 API (DELETE) /cars/{carsId}

  • 차량 상세 조회 API (GET) /cars/{carsId}

  • 차량 목록 조회 API (GET) /cars

  • 차량 필터링 및 정렬 API (GET) /cars?brand={brand}&color={color}&mingaseconomy={min}&maxgaseconomy={max}&includeacc={includeacc}&page={page}&size={size}&sort={sort}&type={type}

  • 차량 등록 API (POST) /cars

  • 차량 삭제 API (DELETE) /cars/{carsId}

  • 차량 상세 조회 API (GET) /cars/{carsId}

2. DB 스키마

  • car

    • car_id. BIGINT, PK.

    • brand_id. BIGINT, FK.

    • gas_economy. BIGINT.

    • color. VARCHAR(255)

  • brand

    • brand_id. BIGINT, PK

    • name. TEXT

  • accessories

    • accessory_id. BIGINT, PK

    • name. TEXT

    • description. TEXT

  • car_accessories

    • car_accessories_id. BIGINT, PK

    • car_id. BIGINT FK

    • accessories_id. BIGINT FK

3. 아키텍처

  • Server

    • 사용자 요청 처리

    • DB 연동

  • MySql

    • 데이터 저장

  • Redis

    • 캐싱.

Last updated