2일차 미션(API 만들기)
              
              
              
              
              2024.02.20
            
            과제
- 문제1 : 생성자 없어서 틀렸었음 
@RestController
public class AssignmentApplication {
    @GetMapping("/api/v1/calc")
    public CalcResponse calc(CalcRequest request){ // @RequestParam
        System.out.println(request.getNum1() + " // " + request.getNum2());
//        return new CalcResponse(request.getNum1() + request.getNum2(),
//                request.getNum1() - request.getNum2(),
//                request.getNum1() * request.getNum2());
        return new CalcResponse(request.getNum1(), request.getNum2());
    }
}
package com.group.libraryapp.assignment.dto.request;
public class CalcRequest {
    private int num1;
    private int num2;
    // 생성자가 없으면 객체를 생성할때 값을 주입하지 못한다.
    public CalcRequest(int num1, int num2) {
        this.num1 = num1;
        this.num2 = num2;
    }
    public int getNum1() {
        return num1;
    }
    public int getNum2() {
        return num2;
    }
}
package com.group.libraryapp.assignment.dto.response;
public class CalcResponse {
    private int add;
    private int minus;
    private int multiply;
//    public CalcResponse(int add, int minus, int multiply) {
//        this.add = add;
//        this.minus = minus;
//        this.multiply = multiply;
//    }
    public CalcResponse(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;
    }
}
- 쿼리에 2023-01-01 String으로 입력받음 → DayResponse 응답 객체를 생성해서 return함 
 객체를 생성하고 초기화 할 때 입력받은 날짜를 요일로 변경해야함 입력받은 String을 LocalDateTime 으로 변경함. 이 때 변경은 String을 잘라서 년,월,일,시간,분으로 나눔(0시 0분으로 임의설정) 변경된 LocalDateTime에서 getDayOfWeek함수로 요일을 얻고 String으로 변경해서 반환
@GetMapping("/api/v1/day-of-the-week")
    public DayResponse day(String date){
        return new DayResponse(date);
    }
package com.group.libraryapp.assignment.dto.response;
import java.time.LocalDateTime;
public class DayResponse {
    String dayOfTheWeek;
    public DayResponse(String dayOfTheWeek) {
        LocalDateTime localDateTime = LocalDateTime.of(Integer.parseInt(dayOfTheWeek.substring(0,4)), Integer.parseInt(dayOfTheWeek.substring(5,7)), Integer.parseInt(dayOfTheWeek.substring(8)),0,0);
        this.dayOfTheWeek = localDateTime.getDayOfWeek().toString();
    }
    public String getDayOfTheWeek() {
        return dayOfTheWeek;
    }
}
- API에서 받는 Body라고 해서 POST 설정함, 처음에 @ReqeustBody를 안해서 입력받은 배열이 null로 떴었음. RequestDto에 모든 인자가 있는 생성자 한개만 있는 상태에서는 결과가 안나왔음. 기본 생성자를 만들어주니까 답이 바르게 나옴 언제 기본생성자를 써주고 언제 매개변수가 있는 생성자를 써줘야할까? 
@PostMapping("/api/v1/nums-sum")
    public Integer sum(@RequestBody SumRequest nums){
        Integer result = 0;
        for(Integer num : nums.getNums()){
            result += num;
        }
        return result;
    }
package com.group.libraryapp.assignment.dto.request;
import java.util.List;
public class SumRequest {
    private List<Integer> nums;
    public SumRequest() {
    }
    public SumRequest(List<Integer> nums) {
        this.nums = nums;
    }
    public List<Integer> getNums() {
        return nums;
    }
}
댓글을 작성해보세요.
