import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class CalculatorController {
@GetMapping("/add") //GET /add
public int addToNumbers(@RequestParam int number1,
@RequestParam int number2)
{
return number1 + number2;
}
}
@RestController는 @Controller에 @ResponseBody가 추가된 것입니다. RestController의 주용도는 Json 형태로 객체 데이터를 반환하는 것입니다. 최근에 데이터를 응답으로 제공하는 REST API를 개발할 때 주로 사용하며 객체를 ResponseEntity로 감싸서 반환합니다
GetMapping 은 메소드에만 적용. HTTP GET 요청을 특정 핸들러 메소드에 맵핑하기위한 annotation
URL상에서 데이터를 찾아서 받아온다. (URL상에 number1, number2가 명시되어 있어야함)
URL상에 올라가지 않고 Body에 담긴 데이터를 받아온다. URL상에 데이터가 올라가지 않아 보안상으로 더 안정적임
public class CalculatorAddRequest {
private final int number1;
private final int Number2;
public int getNumber2() {
return Number2;
}
public int getNumber1() {
return number1;
}
public CalculatorAddRequest(int number1, int number2) {
this.number1 = number1;
Number2 = number2;
}
}
위 객체를 생성 후
import com.group.libraryapp.dto.calculator.request.CalculatorAddRequest;
@RestController
public class CalculatorController {
@GetMapping("/add") //GET
public int addToNumbers(CalculatorAddRequest request)
{
return request.getNumber1() + request.getNumber2();
}
}
객체로 요청을 받으면 @RequestParam없이 작성할 수 있습니다.
@GetMapping("/add") //GET
public int addToNumbers(@RequestBody CalculatorAddRequest request)
{
return request.getNumber1() + request.getNumber2();
}
//Body
{
number1 : 10,
number2 : 20
}
@RequestBody를 추가하고 URL을 수정후 Body에 객체 데이터를 담아 보내 작성할 수 있습니다.