2017-02-18 3 views
0

저는 스프링 부트를 처음 사용합니다. 나는이처럼 보이는 JSON 개체가 :스프링 부트 : JSON 개체를 GET 요청에 추가하는 방법은 무엇입니까?

public class Subscription { 
    public Subscription(@JsonProperty("id") long id, @JsonProperty("messageType") List<String> messageType) { 
     this.id = id; 
     this.messageType = messageType; 
    } 
} 

내가 완벽하게 작동하는 PUT 요청과 컨트롤러가 :

@RequestMapping(value=SUBSCRIBE_URI, method=RequestMethod.PUT) 
    public ResponseEntity<String> updateSubscription(@RequestBody Subscription payload) throws Exception{ 
     ... 
    } 

{ 
    id: 3, 
    messageType: ["one", "two", "three"] 
} 

을 나는 개체를 나타내는 클래스가

하지만 GET 요청에 대해이 작업을 수행 할 수 없습니다. @RequestParam을 사용하고 id 및 messageType 매개 변수를 구분할 때 messageType 목록에는 문자열에 대괄호 (예 : "[one]", "[two]")가 있습니다. PUT 요청과 비슷한 @RequestBody를 사용하면 400 오류가 발생합니다.

문자열에서 대괄호를 사용하지 않고이 JSON 데이터를 GET 요청에 전달하는 올바른 방법은 무엇입니까?

+0

[요청 본문을 요청 본문으로 전달]의 가능한 복제본 (http://stackoverflow.com/questions/11575947/passing-json-data-in-get-request-as-request-body) – Avinash

답변

0

JSON을 요청 매개 변수로 직접 보낼 수 없습니다. 서버에 전달하려는 json 구조에서 encodeURIComponent()를 호출 한 다음 인수를 문자열로 설정하는 등의 작업을 수행해야합니다. 서버 측에서 문자열을 다시 모델 객체로 변환해야합니다.

0

@RequestParam은 모든 데이터를 간단한 문자열로받을 때 GET의 경우 특히 기본 데이터 형식 만 해당 변수로 올바르게 매핑 할 수 있습니다. 또한 messageType이 List 데이터 유형이 될 필요가 없습니다. 문자열로서, 대괄호없이 값을 일반 문자열로받습니다.

관련 문제