TIL:) Path Variable과 Request Param

😃 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는

앞으로도 많은 학습이 필요할 것 같다!

개념은 비슷하지만 구현하는 방식이 약간 달라서 어렵게 느껴진다

BELATED ARTICLES

more