Java REST-带JSON的HTTP Post多部分

Java REST-带JSON的HTTP Post多部分,java,json,rest,http,resteasy,Java,Json,Rest,Http,Resteasy,我需要接收一个仅包含2个参数的HTTP Post多部分: JSON字符串 二进制文件 设置车身的正确方法是什么? 我将使用Chrome REST控制台测试HTTP调用,因此我想知道是否正确的解决方案是为JSON参数和二进制文件设置一个“标签”键 在服务器端,我使用的是Resteasy 2.x,我将阅读多部分正文,如下所示: @POST @Consumes("multipart/form-data") public String postWithPhoto(MultipartFormDataI

我需要接收一个仅包含2个参数的HTTP Post多部分:

  • JSON字符串
  • 二进制文件
设置车身的正确方法是什么? 我将使用Chrome REST控制台测试HTTP调用,因此我想知道是否正确的解决方案是为JSON参数和二进制文件设置一个“标签”键

在服务器端,我使用的是Resteasy 2.x,我将阅读多部分正文,如下所示:

@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
}
@POST
@使用(“多部分/表单数据”)
公共字符串postWithPhoto(MultipartFormDataInput multiPart){
Map params=multiPart.getFormDataMap();
字符串myJson=params.get(“myJsonName”).get(0.getBodyAsString();
InputPart imagePart=params.get(“照片”).get(0);
//用我的json和我的照片做任何我需要做的事情
}
这是路吗? 使用标识特定内容配置的键“myJsonName”检索JSON字符串是否正确? 有没有其他方法可以在一个HTTP多部分请求中接收这两个内容


提前感谢

如果我理解正确,您希望从HTTP/REST控制台手动编写一个多部分请求。多部分格式简单;可以找到一个简短的介绍。您需要找到一个边界,这是一个在内容中找不到的字符串,比如
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--
——来吧
内容配置:表单数据;name=“myJsonString”
内容类型:application/json
{“foo”:“bar”}
--这里
内容配置:表单数据;name=“照片”
内容类型:图像/jpeg
内容传输编码:base64
--这里--

这是什么类型的REST资源?这两个部分在资源级别上的关系如何?实际上,我们处理此资源的方式并不是完全RESTful的,因为映像是资源的“组件”,而不是另一个资源。实际上,您也可以在soap ui中添加附件。这减少了必须通过实际的帖子正文和内容类型。有没有一种标准化的方法来确定唯一的边界?@andig我不知道有什么。也许你可以用一个,但这不一定是个好主意。通常,您的HTTP库应该为您解决这个问题。如果我们知道请求中只有json和base64数据,那么像
\*
这样的东西不应该作为边界吗?它既不允许存在于json中,也不允许存在于base64中。为什么要使用base64对JPEG数据进行编码?HTTP允许您发送原始字节。