[인프런 워밍업 클럽 스터디] 4일차 - 데이터베이스를 사용해 만드는 API
[이론 정리]
생애 최초 database 조작하기
디스크와 메모리 차이를 이해하고, Database의 필요성을 이해한다.
SQL을 이용해 MySQL Database를 조작할 수 있다.
스프링 서버를 이용해 Database에 접근하고 데이터를 저장, 조회, 업데이트, 삭제할 수 있다.
API의 예외 상황을 알아보고 예외를 처리할 수 있다.
[과제]
문제 1
우리는 작은 과일 가게를 운영하고 있습니다. 과일 가게에 입고된 "과일 정보"를 저장하는 API를 만들어 봅시다. 스펙은 다음과 같습니다.
HTTP method : POST
HTTP path : /api/v1/fruit
HTTP 요청 Body
{
"name" : String,
"warehousingDate" : LocalDate,
"price" : long
}
HTTP 요청 Body 예시
{
"name" : "사과",
"warehousingDate" : "2024-02-01",
"price" : 5000
}
응답 : 성공시 200
💡한 걸음 더!
자바에서 정수를 다루는 가장 대표적인 두 가지 방법은 int와 long입니다.
이 두 가지 방법 중 위 API에서 long을 사용한 이유는 무엇일까요?
문제 2
과일이 팔리게 되면, 우리 시스템에 팔린 과일 정보를 기록해야 합니다. 스펙은 다음과 같습니다.
HTTP method : PUT
HTTP path : /api/v1/fruit
HTTP 요청 Body
{
"id" : long
}
HTTP 요청 Body 예시
{
"id" : 3
}
응답 : 성공시 200
문제 3
우리는 특정 과일을 기준으로 팔린 금액, 팔리지 않은 금액을 조회하고 싶습니다.
예를 들어
(1, 사과, 3000원, 판매O)
(2, 사과, 4000원, 판매X)
(3, 사과, 3000원, 판매O)
와 같은 세 데이터가 있다면 우리의 API는 판매된 금액 : 6000원, 판매되지 않은 금액 : 4000원 이라고 응답해야 합니다.
구체적인 스펙은 다음과 같습니다.
HTTP method : GET
HTTP path : /api/v1/fruit/stat
HTTP query
- name : 과일 이름
예시 GET /api/v1/fruit/stat?name=사과
HTTP 응답 Body
{
"salesAmount" : long,
"notSalesAmount" : long
}
HTTP 응답 Body 예시
{
"salesAmount" : 6000,
"notSalesAmount" : 4000
}
💡한 걸음 더!
(문제 3번을 모두 푸셨다면) SQL의 sum, group by 키워드를 검색해 적용해보세요.
댓글을 작성해보세요.