본문 바로가기
카테고리 없음

인프런 워밍업 클럽 1기_BE 2일차 과제

by 엔 터 2024. 5. 1.

 

인프런 워밍업 클럽 1기 2일차 과제 문제 1번

ExController.java

@RestController
public class ExController {

    @GetMapping("/api/v1/calc")
    public CalculatorResponse plusMinusMultiplyCalculator(@RequestParam int num1, int num2) {

        return new CalculatorResponse(num1, num2);
		    }
    }

 

 Controller에서 getter가 있는 객체를 반환하면 반환값이 JSON이 된다! (CalculatorResponse)

ExController.java(파라미터로 dto 객체 받기)

@RestController
public class ExController {

    @GetMapping("/api/v1/calc")
    public CalculatorResponse plusMinusMultiplyCalculator(CalculatorRequest request) {

        return new CalculatorResponse(request);
	    }
    }

 

CalculatorRequest.java

public class CalculatorRequest {
    private int num1;
    private int num2;

    public CalculatorRequest(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }

    public int getNum1() {
        return num1;
    }

    public int getNum2() {
        return num2;
    }
}

 

CalculatorResponse.java

public class CalculatorResponse {

    private int add;
    private int minus;
    private int multiply;

    public CalculatorResponse(int num1, int num2) {
        this.add = num1 + num2;
        this.minus = num1 - num2;
        this.multiply = num1 * num2;
    }

    public int getAdd() {
        return add;
    }

    public int getMinus() {
        return minus;
    }

    public int getMultiply() {
        return multiply;
    }
}

 

Request 객체를 파라미터로 받아서 요청을 보내니까 JSON 값이 전부 0이었다
그래서 @RequestParam을 사용해 처리하였다. 왜 JSON값이 0인지 확인해 보니
Request 객체에 생성자를 따로 정의해주지 않아서 JSON 값이 0으로 나온 거였다.
그런데 예제에서도 GET 메서드 CalculatorAddRequest는 생성자를 새로 정의했는데
POST 메서드 CalculatorMultiplyRequest에서는 생성자를 따로 정의하지 않았다
이 부분은 추가로 공부한 후 인프런 워밍업 클럽 스터디 발자국에 작성하겠다.

 

Response

문제 1 응답
인프런 워밍업 클럽 1기 2일차 과제 문제 2번

 

ExController.java

@RestController
public class ExController {

@GetMapping("/api/v1/day-of-the-week")
    public DateResponse dayOfTheWeek(@RequestParam String date) {

        return new DateResponse(date);

	    }
	}

 

DataResponse.java

public class DateResponse {
    private Enum<DayOfWeek> dayOfTheWeek;

    public DateResponse(String date) {
        LocalDate parsed = LocalDate.parse(date);
        this.dayOfTheWeek = parsed.getDayOfWeek();
    }

    public Enum<DayOfWeek> getDayOfTheWeek() {
        return dayOfTheWeek;
    }
}
GET 메서드에서 파라미터의 value의 타입은 문자열로 들어오므로
DateResponse의 생성자에서 LocalDate.parse()를 통해 문자열을 LocalDate로 바꿔주었다.

 

Response

문제 2 응답

 

인프런 워밍업 클럽 1기 2일차 과제 문제 3번

 

ExController.java

@RestController
public class ExController {

@PostMapping("/api/v1/multi-number-sum")
    public int multiNumberSum(@RequestBody CalculatorMultiNumber request) {
        int[] numbers = request.getNumbers();
        int sum = Arrays.stream(numbers).sum();
        return sum;
	    }
    }

 

CalculatorMultiNumber.java

public class CalculatorMultiNumber {

    int[] numbers = new int[5];

    public int[] getNumbers() {
        return numbers;
    }
}
자료구조 List를 잘 몰라서 그냥 배열로 선언했다.
그런데 길이가 5인 배열을 선언했는데 HTTP body에 값이 6개인 리스트를 넣고
요청을 보내도 모든 수를 더해서 값이 잘 온다.
이 부분도 추가로 학습 후 발자국에 작성

 

Response

리스트의 값을 6개로 했을 때

 

틀린 내용이나 부족한 부분 댓글로 알려주시면 추가로 공부해서 수정하겠습니다 감사합니다.