인프런 워밍업 클럽 0기 - 백엔드 코스 (과제 2)
9개월 전
문제 1. GET 방식의 API 만들기
path :
/api/v1/calc
쿼리 파라미터 :
num1
,num2
response
{
"add": {덧셈결과},
"minus": {뺄셈결과},
"multiply": {곱셈결과}
}
해결 방법
@RequestParam
어노테이션 활용 방법@GetMapping("/api/v1/calc") public CalculatorAllResponse calcByRequestParam(@RequestParam int num1, @RequestParam int num2){ return new CalculatorAllResponse(num1+num2,num1-num2,num1*num2); }
dto 활용 방법
@GetMapping("/api/v2/calc")
public CalculatorAllResponse calcByDto(CalculatorAllRequest request){
return new CalculatorAllResponse(request.getNum1()+request.getNum2(),request.getNum1()-request.getNum2(),request.getNum1()*request.getNum2());
}
결과 1
결과 2
문제 2. 날짜를 입력하면 몇 요일인지 알려주는 GET API 만들기
path :
/api/v1/day-of-the-week
쿼리 파라미터 : date(yyyy-mm-dd)
response
{
"dayOfTheWeek": "MON"
}
해결 방법
이 문제는 사실 모두 LocalDate
패키지를 활용하면 간편하게 해결 가능하다.
@GetMapping("/api/v1/day-of-the-week")
public Map<String,String> getDayOfTheWeek(@RequestParam String date){
LocalDate today = LocalDate.parse(date, DateTimeFormatter.ISO_DATE);
Map<String,String> result = new HashMap<>();
result.put("dayOfTheWeek",today.getDayOfWeek().getDisplayName(TextStyle.SHORT, Locale.US));
return result;
}
쿼리 파라미터를 통해 받아온 오늘 날짜를 통해 today라는
LocalDate
인스턴스를 생성해준다.LocalDate.getDayOfWeek()
메서드를 통해 해당 날짜의 요일을 반환할 수 있다.실제로는 1~7 숫자가 반환되고 1 = Mon, 2 = TUE ... 등을 나타낸다.
여기서
getDisplayName()
메서드를 통해 문제에서 요구한 String 형식으로 반환되도록 한다.
문제 3. 여러 수를 받아 총 합을 반환하는 POST API 만들기
path :
/api/v1/add-all
body
{
"numbers": [1, 2, 3, 4, 5]
}
response:
int
해결 방법
@GetMapping("/api/v1/add-all") public int addAll(@RequestBody Map<String, List<Integer>> request){ return request.get("numbers").stream().mapToInt(Integer::intValue).sum(); }
body의 데이터는
@RequestBody
어노테이션을 통해 얻어옵니다.stream()
을 통해 리스트 안에 모든 값들을 더해줄 수 있도록 합니다.
댓글을 작성해보세요.