@RestController
public class PlusMinusMultiply {
@GetMapping("/api/v1/calc")
public PlusMinusMultiplyResult addTwoNumber(@RequestParam int num1, int num2){
return new PlusMinusMultiplyResult(num1,num2);
}
package com.group.libraryapp.dto.practice;
public class PlusMinusMultiplyResult {
private int add;
private int minus;
private int multiply;
public PlusMinusMultiplyResult(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;
}
}
@RestController
public class GetDateOfWeek {
@GetMapping("/api/v1/day-of-the-week")
public DateResponseDTO getDate(@RequestParam String date){
DateResponseDTO dateResponseDTO = new DateResponseDTO(date);
return dateResponseDTO;
}
}
package com.group.libraryapp.dto.practice;
import java.time.DayOfWeek;
import java.time.LocalDate;
import java.time.format.TextStyle;
import java.util.Locale;
public class DateResponseDTO {
private String dayOfTheWeek;
public DateResponseDTO(String date){
LocalDate localDate = LocalDate.parse(date);
DayOfWeek dayOfWeek = LocalDate.now().getDayOfWeek();
this.dayOfTheWeek = dayOfWeek.getDisplayName(TextStyle.SHORT,
Locale.KOREA).toUpperCase();
}
public String getDayOfTheWeek() {
return dayOfTheWeek;
}
}
@RestController
public class AddNums {
@PostMapping("/api/v1/addNums")
public int getSum(@RequestBody CalculatorSumRequest rq){
return rq.getNumbers()
.stream()
.mapToInt(Integer::intValue)
.sum();
}
package com.group.libraryapp.dto.practice;
import java.lang.reflect.Array;
import java.util.ArrayList;
public class CalculatorSumRequest {
private ArrayList<Integer> numbers;
public ArrayList<Integer> getNumbers() {
return numbers;
}
}
3번 API 개발시 사용한 .stream()은 자바 collection 문법을 적용해서 개발해 봤다.
1,2 번 API 개발시에 원래는 입력받는 부분을 @RequestParam이 아닌 객체로 만들고 하는 방법도 있는데 문제에서는 입력값이 주어져 있어서 그냥 Param으로 받아서 해결했다.
만약, 여러 api가 같은 DTO를 사용하게 된다면 객체로 받을 수 있게 DTO를 추가 생성해도 좋을듯하다.