2일차 미션(API 만들기)
9개월 전
과제
문제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;
}
}
댓글을 작성해보세요.