본문 바로가기
Programming/Spring

[Spring] - 스프링부트 API 작성 방법 : GetMapping

by jenlve 2024. 2. 4.

controller 패키지

 클라이언트가 입력한 값에 대한 응답을 수행하는 코드들이 담기는 패키지

 모든 요청은 컨트롤러를 통해서 진행되어야 한다.

 

기본적인 controller 클래스 작성 방법

우선 스프링에게 해당 클래스가 Controller로 동작한다는 것을 인식하게끔

우리는 어노테이션"@"을 달아줘야 한다. 

 

 @RestController 어노테이션을 클래스 상단에 작성해준다.   

➡️ RestController가 궁금하다면..여기로

 

[Spring] - RestController란?

➡️ RestController란? ▪ @Controller에 @ResponseBody가 결합된 어노테이션이다. @Controller는 전통적인 스프링 MVC 컨트롤러를 정의할 때 사용된 것으로, 주로 뷰 템플릿을 반환하는 데 사용한다. 예를 들어

jenlvestory.tistory.com

 

GetMapping

매개변수가 없을 경우

@GetMapping(value = "/hello")
public String getName(){
    return "getName called!";
}

 

@Path Variable을 사용할 경우

    @GetMapping(value = "/variable1/{variable}")
    public String getVariable1(@PathVariable (name = "variable") String variable){
        return variable;
    }

 

 @RequestParam을 사용할 경우

쿼리 형식으로 값을 전달하는 방식으로, ?를 기준으로 우측에 {키}={값} 형태로 요청을 전송한다.

여러개의 값을 전달할 경우 "&"로 연결한다.

 

    ▪ Param으로 어떤 값이 들어올지 명확하게 알고 있을 경우

    @GetMapping(value = "/request1")
    public String getRequestParam1(
            @RequestParam (name = "name") String name,
            @RequestParam (name = "email") String email,
            @RequestParam (name = "organization") String organization
    ){
        return name + " " + email + " " + organization;
    }

   

    ▪ Param으로 어떤 값이 들어올지 모를 경우

    @GetMapping(value = "/request2")
    public String getRequestParam2(
            @RequestParam Map<String, String> param
    ){
        StringBuilder sb = new StringBuilder();
        param.forEach(
                (key, value) -> sb.append(key).append(" ").append(value).append("\n")
        );
        return sb.toString();
    }

 

 

 DTO 객체를 이용한 GET메서드 구현

 

➡️ DTO란?

: Data Transfer Object의 약자로, 다른 레이어 간의 데이터 교환에 사용되는 데이터 객체이다.

 

DTO는 데이터를 교환하는 용도로만 사용하는 객체이기 때문에, 

  DTO에는 별도의 로직이 포함되지 않는다. 

GetMapping시, DTO 클래스에 선언된 필드는 컨트롤러의 메서드에서 쿼리 파라미터의 "키"와 매핑된다.

따라서 쿼리스트링의 키가 정해져 있지만, 받아야 할 파라미터가 많을 경우,

  DTO를 활용하여 가독성을 높일 수 있다.

 

<MemberDto.java>

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class MemberDto {

    private String name;
    private String email;
    private String organization;

}

 

<GetMapping>

    @GetMapping(value = "/request3")
    public String getRequestParam3(MemberDto memberDto){
        return memberDto.getName() + " " + memberDto.getEmail() +
                " " + memberDto.getOrganization();
    }

 

출처 : 스프링 부트 핵심 가이드, 장정우 지음