728x90
🔑문제 1
🔑코드
- Controller
package com.group.libraryapp.controller.calculator;
import com.group.libraryapp.dto.caclulator.request.CalculatorRequest;
import com.group.libraryapp.dto.caclulator.response.CalculatorResponse;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("/api/v1")
public class CalculatorController {
@GetMapping("/calc")
public CalculatorResponse calculator(@RequestBody CalculatorRequest request){
return new CalculatorResponse(request);
}
}
먼저 @RequestMapping을 이용해 문제에 나와있는 api의 공통된 부분을 한 번에 작성해줬다.
num1, num2는 파라미터로 받아도 되지만 가독성과 효율성을 위해 body로 받는 코드로 작성했다.
- 요청 DTO
package com.group.libraryapp.dto.caclulator.request;
public class CalculatorRequest {
private int num1;
private int num2;
public int getNum1() {
return num1;
}
public int getNum2() {
return num2;
}
}
- 응답 DTO
package com.group.libraryapp.dto.caclulator.response;
import com.group.libraryapp.dto.caclulator.request.CalculatorRequest;
public class CalculatorResponse {
private int add;
private int minus;
private int multiply;
public CalculatorResponse(CalculatorRequest request){
this.add = request.getNum1()+ request.getNum2();
this.minus = request.getNum1()- request.getNum2();
this.multiply = request.getNum1()* request.getNum2();
}
public int getAdd() {
return add;
}
public int getMinus() {
return minus;
}
public int getMultiply() {
return multiply;
}
}
- Post Man 테스트 결과
문제 요구사항과 일치하는 결과가 반환되었다.
🔑문제 2
🔑코드
- Controller
@GetMapping("/day-of-the-week")
public DateResponse calculateDay(@RequestBody DateRequest request){
return new DateResponse(request);
}
DateRequest를 바디로 받았다. 그런데 굳이 바디로 받을 필요는 없을 듯?
- 요청 DTO
package com.group.libraryapp.dto.caclulator.request;
import java.time.LocalDate;
public class DateRequest {
private LocalDate date;
public LocalDate getDate() {
return date;
}
}
- 응답 DTO
package com.group.libraryapp.dto.caclulator.response;
import com.group.libraryapp.dto.caclulator.request.DateRequest;
public class DateResponse {
private String dayOfWeek;
public String getDayOfWeek() {
return dayOfWeek.substring(0,3);
}
public DateResponse(DateRequest request) {
this.dayOfWeek = request.getDate().getDayOfWeek().toString();
}
}
문제의 요구 사항을 보면 요일이 MONDAY처럼 전체가 출력되는게 아니라 앞의 세 글자만 출력되면 되기 때문에 getter에서 substring을 이용해 문자를 세 글자만 나오도록 해줬다.
- Post Man 테스트 결과
🔑문제 3
🔑코드
- Controller
@PostMapping("/sum")
public Integer addNumbers(@RequestBody NumsRequest request){
int answer = 0;
for(int item : request.getNumbers()) {
answer+=item;
}
return answer;
}
반환결과가 JSON이 아니라고 문제에 명시되어있어서 Integer를 반환할 수 있도록 해주었다.
이 문제에서는 응답 DTO를 사용하지 않고 반복문으로 계산해서 결과값을 반환해줬다.
- 요청 DTO
package com.group.libraryapp.dto.caclulator.request;
import java.util.List;
public class NumsRequest {
private List<Integer> numbers;
public List<Integer> getNumbers() {
return numbers;
}
public NumsRequest(List<Integer> numbers) {
this.numbers = numbers;
}
public NumsRequest(){}
}
기본 생성자를 작성하지 않으면 500에러가 발생했었어서 기본 생성자도 함께 작성해줬다.
- Post Man 테스트 결과
728x90
'Spring' 카테고리의 다른 글
[인프런 워밍업 클럽] BE 4번째 과제 - POST, GET, PUT API 만들기 (0) | 2024.02.22 |
---|---|
[인프런 워밍업 클럽] BE 3번째 과제 - 람다식 (0) | 2024.02.21 |
어노테이션과 커스텀 어노테이션 만들기 (0) | 2024.02.19 |
[스프링 프레임워크] 7. 요청 파라미터 취득하기 (0) | 2023.10.25 |
[스프링 프레임워크] 5. MVC 모델 알아보기 (1) | 2023.10.17 |