우리가 클라이언트에게 데이터를 받는 방법이 여러개가 있는데 이번에는 Parameter를 이용하여 데이터를 가져오는 방법을 정리했다.
Parameter로 데이터를 보내는 방법은 URL 뒤에 ?name=mungto
이러한 방식이다.
Spring에서 처리하는 방법은 사용방법은 아래와 같다.
@GetMapping(path = "/message")
public ResponseEntity<String> messageForParam(@RequestParam("name") String name) {
...
}
변수명과 parameter이름이 같다면 괄호안에 내용은 생략이 가능하다.
@GetMapping(path = "/message")
public ResponseEntity<String> messageForParam(@RequestParam String name) {
...
}
물론 위와 같이 사용하면 클라이언트가 데이터를 입력하지 않아서 Parameter가 null로 들어올 수 있다.
이때 우리는 해당 데이터가 무조건 필요하다면 아래와 같은 방식으로 강제가 가능하다.
@GetMapping(path = "/message", params = "name")
public ResponseEntity<String> messageForParam(@RequestParam String name) {
...
}
위와 같이 강제를 했다면 400 BAD Response가 날라오게 된다.
추가적인 기능으로는 특정 파라미터가 특정 데이터인지 확인 할 수 있다.
@GetMapping(path = "/message", params = "name=mungto")
public ResponseEntity<String> messageForParam(@RequestParam String name) {
...
}
이때는 ''?name=mungto' 가 아니라면 에러가 발생한다.
그런데 나는 여기서 특정 파라미터 값을 강제하는 것이 과연 유용한 것인지? 고민을 했다.
생각난 것은 2가지 였다.
- 파라미터로 분기처리
- pattern 적용
만약 파라미터에 따라서 분기를 조절한다면 아래와 같이 사용할 수 있을 것이다. (과연 이것이 올바른 지는 모르겠지만?)
@GetMapping(path = "/message", params = "name=mungto")
public ResponseEntity<String> messageForParam(@RequestParam String name) {
...
}
@GetMapping(path = "/message", params = "name=brown")
public ResponseEntity<String> messageForParam1(@RequestParam String name) {
...
}
여기서 과연 uri patterns도 적용되나? 하고 시도를 해보았다.
@GetMapping(path = "/message", params = "name=mung**")
public ResponseEntity<String> messageForParam(@RequestParam String name) {
...
}
안된다 ㅎㅎ..
'프레임워크 > Spring' 카테고리의 다른 글
[Spring] @RequestBody란 무엇인가? 사용법은? (0) | 2021.04.24 |
---|---|
[Spring] Header에서 데이터 가져오기 @RequestHeader (0) | 2021.04.23 |
[Spring] consumes와 produces의 차이 (1) | 2021.04.21 |
[Spring] URI patterns는 무엇인가? (0) | 2021.04.20 |
[Spring] @RequestMapping이란? (0) | 2021.04.08 |
댓글