GetMapping

  • id를 넘겨서 게시판의 리스트를 가져온다고 하면 당연히 GET을 쓰고 글을 작성하면 POST를 작성하는 것이 일반적이다.
  • GETSELECT적인 성향을 갖고 있다.
  • 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