Spring Boot GetMapping 3가지 방법
GetMapping
- id를 넘겨서 게시판의 리스트를 가져온다고 하면 당연히
GET
을 쓰고 글을 작성하면POST
를 작성하는 것이 일반적이다. GET
은SELECT
적인 성향을 갖고 있다.GET
은 서버에서 어떤 데이터를 가져와서 보여준다거나 하는 용도이지 서버의 값이나 상태 등을 바꾸지 않는다.- 게시판의 리스트, 글 보기 기능 같은 것들. 단, 방문자의 로그를 남긴다거나 글 읽은 횟수를 올려준다거나 하는 등은 예외
GETMapping 어노테이션의 3가지 방법
///////////////// 첫번째 방법 시작 /////////////////
@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();
}
///////////////// 첫번째 방법 끝 /////////////////
///////////////// 두번째 방법 시작 /////////////////
@GetMapping("query-param02")
public String queryParam02(@RequestParam String name, String email, int age) {
System.out.println(name);
System.out.println(email);
System.out.println(age);
return name + " " + email + " " + age;
}
///////////////// 두번째 방법 끝 /////////////////
///////////////// 세번째 방법 시작 /////////////////
@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();
}
///////////////// 세번째 방법 끝 /////////////////
세번째 방법에 대한 DTO
public class UserRequest {
private String name;
private String email;
private int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "UserRequest{" +
"name='" + name + '\'' +
", email='" + email + '\'' +
", age=" + age +
'}';
}
}
그래서.
- 일반적으로 저 세가지의 방법이 있지만 세번째(객체를 만들어서 활용)의 방법을 많이 사용한다.
- 무한정으로 받는다 하면 첫번째(Map)의 형태를 사용하긴하지만 그래도 GetMapping을 할 때는 세번째 방법을 많이 사용한다.
- 세번째 방법은
getter
,setter
가 없는, 위의 코드에 예를들어address
라는 값이 들어갈 경우 파싱되지 않기 때문에 API를 디자인 할 때 잘 유의해서 디자인을 해야한다.
Leave a comment