인프런 워밍업 클럽

인프런 워밍업 클럽/ BE 4일차 과제 : API 추가

킹갓홍 2024. 5. 7. 20:06

이번 과제는 2일차 과제에 이어서 추가적인 API를 만들어 보는 것이다.

 

문제 1

우선 Body로 넘어오는 Json 데이터를  받아주기 위해 DTO를 만들었다.

Request Body를 사용해서 만들어준 DTO로 데이터를 받는다.

sql문을 만들고 JdbcTemplate객체로 sql문 안에 ? 부분을 채워준다.

 

결과값

5번째 사과가 추가 됐다!

 

📌Price에 int 대신 long을 사용한 이유는?

int 타입은 4바이트로 -2,147,483,648 ~ 2,147,483,647 범위의 값을 표현할 수 있지만,

long타입은 8바이트로 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 표현할 수 있다.

즉, 나중에 큰 값을 받을 것을 대비해서 long타입을 사용했다고 볼 수 있다.

 

문제2

받아야하는 값이 id 한개지만, RequestBody에 Json데이터로 넘겨주고 있기 때문에 DTO를 만들어 줬다.

FruitUpdateRequestDTO
Controller

@RequestBody를 써서 방금 만든 DTO로 id값을 받아준다.

SQL문을 만들어서 JdbcTemplate를 사용해서 쿼리를 날려준다.

 

결과값 

포스트맨으로 id값 5를 날려서 5번 데이터의 판매상태가 수정됐다.

 

문제3

Controller

쿼리스트링으로 name값을 받기 위해 컨트롤러에서 @RequestParam으로 값을 받아준다!

State 1은 판매처리가 된 것으로 설정했고 0은 판매처리가 되지 않은 것으로 설정했다.

때문에 SQL문을 두 번 날려서 해당 항목(name)이 팔린 총 금액과 팔리지 않은 총 금액을 구했다.

 Json데이터로 넘겨주기 위해 FruitResponseDTO 객체를 만들어서 반환해준다!

 

결과값

현재 DB(예제로 추가한 5번 데이터는 삭제했다.)