[인프런 워밍업 클럽] BE 0기 과제 #2 API생성
9개월 전
문제 1.
package com.group.libraryapp.dto.assignment2.request;
public class Assignment2Request {
private int number1;
private int number2;
public Assignment2Request(int number1, int number2) {
this.number1 = number1;
this.number2 = number2;
}
public int getadd() {
return number1 + number2;
}
public int getminus() {
return number1 - number2;
}
public int getmultiply() {
return number1 * number2;
}
}
Request부분 코드
@RestController
public class Assignment2Controller {
@GetMapping("/api/v1/calc")
public Assignment2Request calc(Assignment2Request request){
return request;
}
Controller부분 코드
실행 결과
강의에서 배웠던 API 생성과도 비슷한 문제였다. return값을 객체로 하여 JSON형식으로 반환값이 나올 수 있도록 해주었다.
문제 2.
package com.group.libraryapp.dto.assignment2.request;
import java.time.DayOfWeek;
import java.time.LocalDate;
public class Assignment2DayRequest {
private LocalDate date;
private DayOfWeek dayOfTheWeek;
public Assignment2DayRequest(String date) {
this.date = LocalDate.parse(date);
this.dayOfTheWeek = this.date.getDayOfWeek();
}
public DayOfWeek getdayOfTheWeek() {
return dayOfTheWeek;
}
}
Request부분 코드
@GetMapping("/api/v1/day")
public Assignment2DayRequest findDay(Assignment2DayRequest request2) {
return request2;
}
Controller부분 코드
실행 결과
날짜를 입력받기 위해 자바의 LocalDate 클래스에 대해 알아보고 요일을 출력하기 위해 DayOfWeek 클래스에 대해서도 찾아 보았다. 입력받는 날짜가 LocalDate의 toString 포맷과 같아 parse를 이용하여 객체에 넣어주었고, DayOfWeek의 객체를 이용해 요일을 받았다. getter를 가진 객체를 이용해 문제1과 마찬가지로 JSON형태로 반환하도록 했다.
문제 3.
package com.group.libraryapp.dto.assignment2.request;
import java.util.ArrayList;
import java.util.List;
public class Assignment2AddRequest {
private final List<Integer> numbers = new ArrayList<>();
public List<Integer> getNumbers() {
return numbers;
}
}
Request부분 코드
@PostMapping("/api/v1/add")
public int addAllNumbers(@RequestBody Assignment2AddRequest request) {
List<Integer> numbers = request.getNumbers();
int sum = 0;
for (Integer number : numbers) {
sum += number;
}
return sum;
}
Controller부분 코드
실행 결과
생각했던 것에 비해 시간이 많이 걸린 문제였다. @RequsetBody를 사용하여 바디로 정보를 받는 경우에 파라미터를 가진 생성자가 있는 객체가 존재한다면 에러가 생긴다는 사실을 모르고 있었다. 에러가 나서 코드의 오류를 분석하면서 여러 정보들을 찾은 결과 Body로 들어오는 JSON을 주어진 객체로 변환하는 과정에서 오류가 생긴다고 찾아냈고, 생성자를 지웠다. 또한 문제 3번에서는 상관이 없지만, final을 사용하여 요청이 처리된 후에는 객체가 바뀌지 않도록 해주어 코드의 안정성을 높였다.
댓글을 작성해보세요.