@RestController
@RequestMapping("/api/get/")
public class GetApiController { }
@GetMapping(path = "/hello")
public String hello() {
return "get Hello";
}
@RequestMapping(path = "/hi", method = RequestMethod.GET)
public String hi() {
return "hi";
}
@GetMapping("/path-variable/{name}")
public String pathVariable(@PathVariable String name) {
System.out.println("PathVariable : "+name);
return name;
}
@GetMapping("/path-variable2/{id}")
public String pathVariable2(@PathVariable(name = "id") String pathName) {
System.out.println("PathVariable : "+pathName);
return pathName;
}
Query Parameter :
- 기본 구조 : ?key=value&key2=value2...
- 방법1 : query param을 맵 형식으로 받을 경우 key의 값을 알 수 없다.
@GetMapping(path = "query-param")
public String queryParam(@RequestParam Map<String, String> queryParam) {
StringBuilder sb = new StringBuilder();
queryParam.entrySet().forEach( entry -> {
System.out.println(entry.getKey());
System.out.println(entry.getValue());
System.out.println("\n");
sb.append(entry.getKey()+" = "+entry.getValue()+"\n");
});
return sb.toString();
}
- 방법2 : query param을 명식적으로 작성 할 수 있다. 그러나 개수가 많아지면 관리가 어렵다.
@GetMapping("query-param02")
public String queryParam02(
@RequestParam String name,
@RequestParam String email,
@RequestParam int age
) {
System.out.println(name);
System.out.println(email);
System.out.println(age);
return name+" "+email+" "+age;
}
- 방법3 : query param을 명시적으로 작성 할 수 있으며, 따로 dto 객체를 만들어 사용하기 때문에 관리에 용이하다. 가장 많이 사용하는 방식이다.
//현재 패키지 안에 'dto'라는 패키지 생성 후 'UserRequest' 파일을 만든다.
//dto/UserRequest.java
public class UserRequest {
private String name;
private String email;
private int age;
//getter, setter...
@Override
public String toString() {
return "UserRequest{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
//GetApiController.java
@GetMapping("query-param03")
public String queryParam03(UserRequest userRequest) {
System.out.println(userRequest.getName());
System.out.println(userRequest.getEmail());
System.out.println(userRequest.getAge());
return userRequest.toString();
}