두 수를 입력하면 연산 결과가 나오는 GET API.
Controller
@GetMapping("/api/v1/calc")
public CalcResponseDTO addMinusMultiply(CalcRequestDTO request) {
return new CalcResponseDTO(request.getNum1(), request.getNum2());
}
RequestDTO
public class CalcRequestDTO {
private int num1;
private int num2;
public CalcRequestDTO(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
public int getNum1() {
return num1;
}
public int getNum2() {
return num2;
}
}
ResponseDTO
public class CalcResponseDTO {
private int add;
private int minus;
private int multiply;
public CalcResponseDTO(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;
}
}
결과
parameter: num1=1&num2=20

날짜를 입력하면 무슨 요일인지 알려주는 GET API.
path:/api/v1/day-of-the-week
Controller
@GetMapping("/api/v1/day-of-the-week")
public DateResponseDTO dayOfTheWeek(@RequestParam("date")String date) {
LocalDate localDate = LocalDate.parse(date);
return new DateResponseDTO(localDate);
}
ResponseDTO
public class DateResponseDTO {
private DayOfWeek DayOfTheWeek;
public DateResponseDTO(LocalDate localDate) {
this.DayOfTheWeek = localDate.getDayOfWeek();
}
public DayOfWeek getDayOfTheWeek() {
return DayOfTheWeek;
}
}
결과
parameter: date=2024-05-01

여러 수의 총 합을 반환하는 POST API.
Controller
@PostMapping("api/v1/addAll")
public int addAll(@RequestBody AddAllRequestDTO requset) {
int sum = 0;
for(int i : requset.getNums())
sum += i;
return sum;
}
AddAllRequestDTO
public class AddAllRequestDTO {
List<Integer> nums = new ArrayList<>();
public List<Integer> getNums() {
return nums;
}
}
결과
parameter: "nums": [1, 2, 3, 4, 5]

과제를 하다보니 궁금해진
1. DTO와 도메인은 왜 분리할까?
2. JSON과 getter