클라이언트(브라우저)에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보내는 방법에는 여러가지가 있다. 따라서 서버는 여러 방법에 대한 처리를 할 수 있어야한다. 지금부터 차근차근 알아보쟈!
Path Variable로 데이터를 받는 방법
// 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);
}
@GetMapping("/star/{name}/age/{age}")
{data}
중괄호를 사용(@PathVariable String name, @PathVariable int age)
@PathVariable
애너테이션과 함께 {name}
중괄호에 선언한 변수명과 변수타입을 선언하면 해당 경로의 데이터를 받아올 수 있음@PathVariable(name="name")
{name}
)과 파라미터명이 다를때는 name 파라미터에 지정하면됨Query String으로 데이터를 받는 방법
?
와 &
를 사용하여 추가함// 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);
}
?name=Robbie&age=95
에서 key 부분에 선언한 name과 age를 사용하여 value에 선언된 Robbie, 95 데이터를 받아옴(@RequestParam String name, @RequestParam int age)
@RequestParam
애너테이션과 함께 key 부분에 선언한 변수명과 변수타입을 선언하면 데이터를 받아올 수 있음<form method="POST" action="/hello/request/form/model">
<div>
이름: <input name="name" type="text">
</div>
<div>
나이: <input name="age" type="text">
</div>
<button>전송</button>
</form>
name=Robbie&age=95
형태로 담겨져서 서버로 전달됨// POST http://localhost:8080/hello/request/form/param
// Header
// Content type: application/x-www-form-urlencoded
// Body
// name=Robbie&age=95
@PostMapping("/form/param")
@ResponseBody
public String helloPostRequestParam(@RequestParam String name, @RequestParam int age) {
return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age);
}
@RequestParam
방식과 동일@RequestParam
은 생략 가능@RequestParam(required = false)
@PathVariable(required = false)
도 해당 옵션이 존재