ExController.java
@RestController
public class ExController {
@GetMapping("/api/v1/calc")
public CalculatorResponse plusMinusMultiplyCalculator(@RequestParam int num1, int num2) {
return new CalculatorResponse(num1, num2);
}
}
Controller에서 getter가 있는 객체를 반환하면 반환값이 JSON이 된다! (CalculatorResponse)
ExController.java(파라미터로 dto 객체 받기)
@RestController
public class ExController {
@GetMapping("/api/v1/calc")
public CalculatorResponse plusMinusMultiplyCalculator(CalculatorRequest request) {
return new CalculatorResponse(request);
}
}
CalculatorRequest.java
public class CalculatorRequest {
private int num1;
private int num2;
public CalculatorRequest(int num1, int num2) {
this.num1 = num1;
this.num2 = num2;
}
public int getNum1() {
return num1;
}
public int getNum2() {
return num2;
}
}
CalculatorResponse.java
public class CalculatorResponse {
private int add;
private int minus;
private int multiply;
public CalculatorResponse(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;
}
}
Request 객체를 파라미터로 받아서 요청을 보내니까 JSON 값이 전부 0이었다
그래서 @RequestParam을 사용해 처리하였다. 왜 JSON값이 0인지 확인해 보니
Request 객체에 생성자를 따로 정의해주지 않아서 JSON 값이 0으로 나온 거였다.
그런데 예제에서도 GET 메서드 CalculatorAddRequest는 생성자를 새로 정의했는데
POST 메서드 CalculatorMultiplyRequest에서는 생성자를 따로 정의하지 않았다
이 부분은 추가로 공부한 후 인프런 워밍업 클럽 스터디 발자국에 작성하겠다.
Response
ExController.java
@RestController
public class ExController {
@GetMapping("/api/v1/day-of-the-week")
public DateResponse dayOfTheWeek(@RequestParam String date) {
return new DateResponse(date);
}
}
DataResponse.java
public class DateResponse {
private Enum<DayOfWeek> dayOfTheWeek;
public DateResponse(String date) {
LocalDate parsed = LocalDate.parse(date);
this.dayOfTheWeek = parsed.getDayOfWeek();
}
public Enum<DayOfWeek> getDayOfTheWeek() {
return dayOfTheWeek;
}
}
GET 메서드에서 파라미터의 value의 타입은 문자열로 들어오므로
DateResponse의 생성자에서 LocalDate.parse()를 통해 문자열을 LocalDate로 바꿔주었다.
Response
ExController.java
@RestController
public class ExController {
@PostMapping("/api/v1/multi-number-sum")
public int multiNumberSum(@RequestBody CalculatorMultiNumber request) {
int[] numbers = request.getNumbers();
int sum = Arrays.stream(numbers).sum();
return sum;
}
}
CalculatorMultiNumber.java
public class CalculatorMultiNumber {
int[] numbers = new int[5];
public int[] getNumbers() {
return numbers;
}
}
자료구조 List를 잘 몰라서 그냥 배열로 선언했다.
그런데 길이가 5인 배열을 선언했는데 HTTP body에 값이 6개인 리스트를 넣고
요청을 보내도 모든 수를 더해서 값이 잘 온다.
이 부분도 추가로 학습 후 발자국에 작성
Response
리스트의 값을 6개로 했을 때
틀린 내용이나 부족한 부분 댓글로 알려주시면 추가로 공부해서 수정하겠습니다 감사합니다.