작성
·
492
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 메소드의 파라미터로 받을 수 있는 방법이 있는지 궁금합니다.
감사합니다.
답변 5
0
0
0
요청 데이터는 외부서버에서 정해진 형식으로 오는것이라서 제가 수정할 수 없었습니다.
특수문자 [, ] 같은 데이터를 받기 위해서 다음과 같은 Config 추가해봤습니다.
지금보니 TomcatWebServerCustomizer 는 그냥 클래스 이름이였네요.
@Configuration
public class TomcatWebServerCustomizer implements WebServerFactoryCustomizer<TomcatServletWebServerFactory> {
@Override
public void customize(TomcatServletWebServerFactory factory) {
factory.addConnectorCustomizers((TomcatConnectorCustomizer)
connector -> connector.setAttribute("relaxedQueryChars", "<>[\\]^`{|}"));
}
}
0
에러 메시지를 보니 인코딩을 안하고 보내셔서 그런거 같네요. JSON을 요청 파라메터에 담아 보내실꺼면 우선 인코딩을해서 하시고 받을 때는 Converter나 Formatter를 사용해서 해당 디코딩 이후에 JSON 문자열을 원하는 타입의 객체로 변환할 수 있을거 같습니다.
톰캣 웹 서버 커스터마이저로 우회하신 방법은 어떻게 하신건지 궁금하네요. 코드를 공유해 주시면 살펴보겠습니다.
0