티스토리 뷰

🍃 스프링

[SPRING] GET API Query String

홓옇 2023. 8. 26. 21:40

url로 쿼리를 전달해서 보낼 때 GET 메소드를 구현하는 방법에 대해서 알아봤다.

1. @RequestParam

@GetMapping("/user/query")  
public String 유저정보출력쿼리(@RequestParam Map<String, String> params) {  
    StringBuilder sb = new StringBuilder();  

    params.entrySet().forEach(param-> {  
        sb.append(param.getKey()+ ": " + param.getValue() + "\n");  
    });  

    return sb.toString();  
}

응답

원래 쿼리스트링으로 몇개가 올지 모른다는 단점 때문에 사용하지 않고 있다가 Map 자료구조를 사용하면 개수에 상관없이 사용할 수 있다는 것이 좋은 것 같다.

2. DTO

의문이 들었던 점이 쿼리스트링으로 GET 메소드를 구현해도 DTO로 받는다면 해당하는 어노테이션이 필요할 것이라고 생각했다.

@GetMapping("/user/dto")  
public String 유저정보출력DTO(UserDTO userDTO) {  
    return userDTO.toString();  
}

응답 - 에러

값이 하나도 담기지 않은 것을 확인할 수 있다. 그리고 @RequestParams나 @RequestBody 어노테이션을 사용하면 런타임에러가 발생함을 확인할 수 있었다.

응답 - 해결

값이 담기지 않는 이유에 대해서 값은 전달이 되지만 UserDTO에 담기지 않는다는 생각을 했고 생성자를 통해 해결할 수 있을거라 생각했고 UserDTO 클래스에 @AllArgsConstructor 어노테이션을 추가하며 해결할 수 있었다.

'🍃 스프링' 카테고리의 다른 글

[SPRING] JPA 순환 참조  (0) 2023.09.11
[SPRING] ResponseDTO  (0) 2023.08.28
[SPRING] 컬렉션  (0) 2023.07.30
[SPRING] Entity, DTO  (0) 2023.07.24
[SPRING] JPA  (0) 2023.06.05
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함