2일차 미션(API 만들기)

과제

  1. 문제1 : 생성자 없어서 틀렸었음

     

AssignmentApplication.java

@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());
    }
}

CalcRequest.java

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;
    }
}

CalcResponse.java

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;
    }
}
  1. 쿼리에 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;
    }
}
  1. 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;
    }
}

댓글을 작성해보세요.

채널톡 아이콘