-
PathVariable과 ReqestParamspring/스프링 입문 주차 2024. 1. 18. 11:36
Client 즉, 브라우저에서 서버로 HTTP 요청을 보낼 때 데이터를 함께 보낼 수 있다.
- 서버에서는 이 데이터를 받아서 사용해야하는데, 데이터를 보내는 방식이 한 가지가 아니라
여러가지가 있기 때문에 모든 방식에 대한 처리 방법을 학습해야한다.
Path Variable 방식GET http://localhost:8080/hello/request/star/Robbie/age/95
- 서버에 보내려는 데이터를 URL 경로에 추가할 수 있다.
- /star/Robbie/age/95// [Request sample] // 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 ParamGET http://localhost:8080/hello/request/form/param?name=Robbie&age=95
- 서버에 보내려는 데이터를 URL 경로 마지막에 ? 와 & 를 사용하여 추가할 수 있다.
- ?name=Robbie&age=95
- 'Robbie'와 '95' 데이터를 서버에 보내기 위해 URL 경로 마지막에 추가했다.// [Request sample] // 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); }
form 태그 POST
POST http://localhost:8080/hello/request/form/param<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>
- HTML의 form 태그를 사용하여 POST 방식으로 HTTP 요청을 보낼 수 있다.
- 이때 해당 데이터는 HTTP Body에 name=Robbie&age=95 형태로 담겨져서 서버로 전달된다.// [Request sample] // 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 애너테이션을 사용하여 받아올 수 있다.
// [Request sample] // GET http://localhost:8080/hello/request/form/param?name=Robbie&age=95 @GetMapping("/form/param") @ResponseBody public String helloGetRequestParam(@RequestParam(required = false) String name, int age) { return String.format("Hello, @RequestParam.<br> name = %s, age = %d", name, age); }
- @RequestParam은 생략이 가능하다.
- @RequestParam(required = false)
- 이렇게 required 옵션은 false로 설정하면 Client에서 전달받은 값들에서 해당 값이 포함되어 있지 않아도
오류가 발생하지 않는다.
- @PathVariable(required = false) 도 해당 옵션이 존재한다.
- Client로 부터 값을 전달 받지 못한 해당 변수는 null로 초기화된다.'spring > 스프링 입문 주차' 카테고리의 다른 글
JDBC란 무엇일까? (0) 2024.01.18 HTTP 데이터를 객체로 처리하는 방법 (0) 2024.01.18 스프링에서 Jackson 형태로 반환하는 법 (0) 2024.01.18 Controller 이해하기 (0) 2024.01.17 스프링 MVC란? (0) 2024.01.17