스터디/인프런

[인프런 워밍업 스터디 클럽 0기- BE] 2일차 과제

행복한라이언 2024. 2. 20. 20:27
728x90
반응형

문제 1번

// 문제 1번 - RequestParam 이용하기
@GetMapping("/api/v1/calc")
public Map<String, Integer> calculateTwoNumber(@RequestParam int num1, @RequestParam int num2) {
    Map<String, Integer> response = new HashMap<>();
    response.put("add", num1 + num2);
    response.put("minus", num1 - num2);
    response.put("multiply", num1 * num2);

    return response;
}

 

  • @RequestParam을 통해서 GET Method의 쿼리를 받았다.
  • Map 자료구조를 통해서 Response 보냈다
    • → Map 자료구조도 좋지만 CalculatorResponse라는 클래스를 만들어서 받는 것이 더 좋아보인다.


문제 2번

// 문제 2번 - LocalDate
@GetMapping("api/v1/day-of-the-week")
public Map<String, DayOfWeek> calculateDayOfWeek(@RequestParam String date) {
    Map<String, DayOfWeek> response = new HashMap<>();

    String[] arr = date.split("-");
    int year = Integer.parseInt(arr[0]);
    int month = Integer.parseInt(arr[1]);
    int day = Integer.parseInt(arr[2]);

    LocalDate request = LocalDate.of(year, month, day);
    DayOfWeek dayOfWeek = request.getDayOfWeek();

    response.put("dayOfWeek", dayOfWeek);

    return response;
}

 

  • @RequestParam을 통해서 GET Method의 쿼리를 받았다.
  • '2023-01-01' 은 String 타입의 입력이다.
  • LocalDate.of( 년, 월, 일) 형태이므로 '-' 기준으로 파싱한 후에 LocalDate 타입의 request를 만들었다.
  • getDayOfWeek 메서드를 통해서 DatOfWeek 타입의 dayOfWeek를 받고 출력했다.
  • LocalDate에 대해서 학습하기


문제 3번

import java.util.List;

public class NumberRequest {
    private List<Integer> numbers;

    // 왜 기본 생성자 추가해야하는거야?
    public NumberRequest() {
    }

    public NumberRequest(List<Integer> numbers) {
        this.numbers = numbers;
    }

    public List<Integer> getNumbers() {
        return numbers;
    }
}

 


// 문제 3번 - DTO 이용하기
@PostMapping("/api/v1/calc")
public int calculateNumbers(@RequestBody NumberRequest request) {
    int response = 0;
    for (int num : request.getNumbers()) {
        response += num;
    }
    System.out.println(response);
    return response;
}

 

  • 요청바디의 리스트를 받기 위해서 DTO에 List 타입을 받로고 했으며 요청바디를 나타내는 @ReqeustBody도 붙여준다.
  • 반환 결과가 JSON이 아닌 Integer이므로 List의 요소르 response에 각각 더해 결과를 반환한다.
  • ★★★ [ERROR] 발생 
    • NumberRequest에서 기본 생성자를 추가하지 않으면 에러가 발생하는 이유는 무엇인가?


 

후속 과제 (누적)

  • 커스텀 어노테이션 만들고 정리하기 (1일차 과제)
  • LocalDate 정리하기 (2일차 과제)
  • NumberRequest에서 기본 생성자를 추가하지 않으면 에러가 발생하는 이유는 무엇인가?
728x90
반응형