-
카테고리
-
세부 분야
백엔드
-
해결 여부
미해결
Get으로 복잡한 형태의 파라미터를 전달 받을 수 없을까요?
20.06.09 18:02 작성 조회수 334
0
안녕하세요 선생님.
Get 메소드로 넘어오는 데이터들을
@Data 어노테이션을 붙인 클래스로 받았는데요
http://localhost:8080/test?my_list=[{"name": "kk", "age": 20}, {"name": "bb", "age":19}]&...기타파라미터들...
위와 같이 요청을 하면 뒤에 기타파라미터들은 잘 받을 수 있는데
my_list(json) 이 추가되면 아래와 같은 bad request 가 발생합니다.
- The valid characters are defined in RFC 7230 and RFC 3986
- The server cannot or will not process the request due to something that is perceived to be a client error (e.g., malformed request syntax, invalid request message framing, or deceptive request routing).
json 이 포함된 데이터를 get 메소드의 파라미터로 받을 수 있는 방법이 있는지 궁금합니다.
감사합니다.
답변을 작성해보세요.
0
0
0
kyoung joon kim
질문자2020.06.10
요청 데이터는 외부서버에서 정해진 형식으로 오는것이라서 제가 수정할 수 없었습니다.
특수문자 [, ] 같은 데이터를 받기 위해서 다음과 같은 Config 추가해봤습니다.
지금보니 TomcatWebServerCustomizer 는 그냥 클래스 이름이였네요.
@Configuration
public class TomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers((TomcatConnectorCustomizer)
connector -> connector.setAttribute("relaxedQueryChars", "<>[\\]^`{|}"));
}
}
0
백기선
지식공유자2020.06.10
에러 메시지를 보니 인코딩을 안하고 보내셔서 그런거 같네요. JSON을 요청 파라메터에 담아 보내실꺼면 우선 인코딩을해서 하시고 받을 때는 Converter나 Formatter를 사용해서 해당 디코딩 이후에 JSON 문자열을 원하는 타입의 객체로 변환할 수 있을거 같습니다.
톰캣 웹 서버 커스터마이저로 우회하신 방법은 어떻게 하신건지 궁금하네요. 코드를 공유해 주시면 살펴보겠습니다.
0
답변 5