😃 Today I Leaned
- SpringBoot
⭐알게 된 점⭐
Path Variable과 Request Param
Path Variable
- 서버에 보내려는 데이터를 URL 경로에 추가할 수 있음
- 만약 Robbie와 95를 서버에 보내기 위해 URL 경로에 추가를 한다면 /Robbie/95 이렇게 추가됨
- 해당 요청 메서드 파라미터에 @PathVariable 어노테이션과 함께 {중괄호}에 선언한 변수명과 변수타입을 선언하면 해당 경로의 데이터를 받아올 수 있음
- 어노테이션 생략이 불가능하므로 꼭 작성해주어야함
- @PathVariable(required = false) -> Client에서 전달받은 값들에서 해당 값이 포함되어 있지 않아도 오류 발생X
// GET http://localhost:8080/hello/request/star/Robbie/age/95
@GetMapping("/star/{name}/age/{age}")
@ResponseBody
public String helloRequestPath(@PathVariable String name, @PathVariable int age)
{
return String.format("Hello, @PathVariable.<br> name = %s, age = %d", name, age);
}
Request Param
- 서버에 보내려는 데이터를 URL 경로 마지막에 ?와 &를 사용하여 추가할 수 있음
- 만약 Robbie와 95를 서버에 보내려면 URL 경로 마지막에 ?name=Robbie&age=95 이렇게 하면 됨
- 데이터를 받기 위해서는 Key부분에 선언한 변수를 사용하여 Value에 선언된 데이터를 받아올 수 있음
- 해당 요청 메서드 파라미터에 @RequestParam 어노테이션을 사용
- 어노테이션 생략이 가능함
- @RequestParam(required = false) -> Client에서 전달받은 값들에서 해당 값이 포함되어 있지 않아도 오류 발생X
// GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95
@GetMapping("/form/param")
@ResponseBody
public String helloGetRequestParam(@RequestParam String name, @RequestParam int age) {
return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
RestController와 Controller 차이점
- HTTP Response Body가 생성되는 방식이 다름
Controller
- Model 객체를 만들어 데이터를 담고 View를 반환
- 주로 View를 반환하기 위해 사용
- Data를 반환해야 하는 경우 @ResponseBody 어노테이션을 활용하여 Json 형태의 데이터 반환
RestController
- 단순히 객체만을 반환하고 객체 데이터는 Json 또는 Xml 형식으로 HTTP 응답에 담아 전송
- 주로 Json 형태로 객체 데이터를 반환
- @Controller + @ResponseBody
- 모든 메소드가 뷰 대신 객체로 작성됨
🐰 END
기존에 알고있던 Spring과 비슷한듯 다른게 많은 Spring Boot는
앞으로도 많은 학습이 필요할 것 같다!
개념은 비슷하지만 구현하는 방식이 약간 달라서 어렵게 느껴진다