주제
두 수를 입력하면 값을 주는 GET API
날짜를 입력하면, 몇 요일인지 알려주는 GET API
여러 수를 받아 총 합을 계산해 주는 POST API 만들기
주요 내용
키워드
GET API
POST API
HTTP Method
두 수를 입력하면, 다음과 같은 결과가 나오는 GET API를 만들어 보자
요구사항
•
path: /api/v1/calc
•
쿼리 파라미터 : num1, num2
{
"add" : 덧셈결과,
"minus": 뺄셈결과,
"multiply": 곱셈결과
}
Java
복사
예시
•
GET /api/v1/calc?num1=10&num2=5
{
"add" : 15,
"minus": 5,
"multiply": 50
}
Java
복사
답안
@GetMapping("/api/v1/calc")
public CalculatorRequest calculator(@RequestParam int num1, @RequestParam int num2) {
CalculatorRequest request = new CalculatorRequest();
request.setAdd(num1 + num2);
request.setMinus(num1 - num2);
request.setMultiply(num1 * num2);
return request;
}
Java
복사
@Getter
@Setter
public class CalculatorRequest {
private int add;
private int minus;
private int multiply;
}
Java
복사
날짜를 입력하면, 몇 요일인지 알려주는 GET API를 만들어 보자!
요구사항
path와 쿼리 파라미터는 임의로 만들어도 상관없다.
예시
•
GET /api/v1/day-of-the-week?date=2023-01-01
{
"dayOfTheWeek": "MON"
}
Java
복사
추가팁
자바 8 이후 날짜를 다루는 주요 객체인 LocalDate 에 대해서 찾아보세요!
클래스를 열어 주요 메소드를 살펴보거나, 직접 자바 문서를 읽는게 어렵다면,
<LocalDate 사용법>을 검색해 익혀보셔도 좋습니다
답안
@GetMapping("/api/v1/dayOfTheWeek")
public Map<String, Object> dayOfTheWeek(@RequestParam String date) {
LocalDate localDate = LocalDate.parse(date);
String getDate = localDate.getDayOfWeek().toString();
return Map.of("dayOfTheWeek", getDate.substring(0, 3));
}
Java
복사
여러 수를 받아 총 합을 반환하는 POST API를 만들어 보자!
요구사항
API에서 받는 Body는 다음과 같은 형태이다. ( HINT : 요청을 받는 DTO 에서 List 를 갖고 있으면 JSON 의 배열을 받을 수 있습니다)
{
"numbers": [1, 2, 3, 4, 51
}
Java
복사
반환
15
Java
복사
주의
반환 결과는 JSON이 아닙니다!
함수에서 String 혹은 Integer를 반환하면,
API 결과가 JSON으로 나가지 않고, 단순한 값으로 나가게 됩니다.
POST MAN과 같은 API 테스트 툴을 이용해 한 번 확인해보세요~
답안
@Getter
@NoArgsConstructor
public class SumNumbersRequest {
private List<Integer> numbers;
public SumNumbersRequest(List<Integer> numbers) {
this.numbers = numbers;
}
}
Java
복사
@PostMapping("/api/v1/sum")
public int sumNumbers(@RequestBody SumNumbersRequest request) {
List<Integer> numList = request.getNumbers();
return numList.stream()
.mapToInt(Integer::intValue).sum();
}
Java
복사