2012-01-31 3 views
63

와 HTTP 포스트 여러 부분 나는 단지 2 매개 변수를 포함하는 HTTP 포스트 여러 부분을 수신해야 시체를 설정? Chrome REST 콘솔을 사용하여 HTTP 호출을 테스트 할 것이므로 정확한 해결책이 JSON 매개 변수와 이진 파일의 "레이블"키를 설정하는지 궁금합니다.REST JSON

@POST 
@Consumes("multipart/form-data") 
public String postWithPhoto(MultipartFormDataInput multiPart) { 
    Map <String, List<InputPart>> params = multiPart.getFormDataMap(); 
    String myJson = params.get("myJsonName").get(0).getBodyAsString(); 
    InputPart imagePart = params.get("photo").get(0); 
    //do whatever I need to do with my json and my photo 
} 

이 갈 수있는 방법입니다

내가 RESTEasy가 2.x를 사용하고 서버 측에

, 나는이 같은 여러 부분 본문을 읽을거야? 특정 콘텐츠 처리를 식별하는 "myJsonName"키를 사용하여 JSON 문자열을 검색하는 것이 맞습니까? 하나의 HTTP 멀티 파트 요청에서 이러한 2 개의 콘텐츠를 수신하는 다른 방법이 있습니까? 내가 제대로 이해하면 사전

+1

어떤 종류의 REST 리소스입니까? 두 부분이 자원 수준과 어떤 관련이 있습니까? –

+0

실제로 이미지가 다른 리소스 대신 "구성 요소"이기 때문에이 리소스를 처리하는 방법은 완전히 RESTful이 아닙니다. – thermz

답변

118

에서

덕분에, 당신은 HTTP/REST 콘솔에서 수동으로 다중 요청을 구성하고자합니다. 멀티 파트 형식은 간단합니다. 간략한 소개는 in the HTML 4.01 spec입니다. 콘텐츠에없는 문자열 인 경계가 필요합니다 (예 : HereGoes). 요청 헤더 Content-Type: multipart/form-data; boundary=HereGoes을 설정합니다. 다음은 유효한 요청 본문이어야합니다.

--HereGoes 
Content-Disposition: form-data; name="myJsonString" 
Content-Type: application/json 

{"foo": "bar"} 
--HereGoes 
Content-Disposition: form-data; name="photo" 
Content-Type: image/jpeg 
Content-Transfer-Encoding: base64 

<...JPEG content in base64...> 
--HereGoes-- 
+1

그게 정확히 내가 읽을 필요가 :-) thanks – thermz

+0

실제로 첨부 파일을 soap-ui에 추가 할 수 있습니다. 이렇게하면 실제 게시물 본문과 내용 유형을 전달해야하는 부담이 줄어 듭니다. –

+0

훌륭한 설명! – abbasdgr8