인프런 워밍업 클럽 0기 - 백엔드 코스 (과제 2)
문제 1. GET 방식의 API 만들기path : /api/v1/calc쿼리 파라미터 : num1, num2response{ "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-allbody{ "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()을 통해 리스트 안에 모든 값들을 더해줄 수 있도록 합니다.