REST - HTTP Post Multipart with JSON

2022-08-31 10:43:33

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

  • 一个 JSON 字符串
  • 二进制文件

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

在服务器端,我正在使用Resteasy 2.x,我将像这样阅读Multipart body:

@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
}

这是要走的路吗?使用标识该特定内容处置的键“myJsonName”检索我的 JSON 字符串是否正确?有没有其他方法可以在一个HTTP多部分请求中接收这2个内容?

提前致谢


答案 1

如果我理解正确,您希望从HTTP / REST控制台手动编写多部分请求。多部分格式很简单;可以在 HTML 4.01 规范中找到简要介绍。您需要提出一个边界,这是在内容中找不到的字符串,比方说。设置请求标头 。那么这应该是一个有效的请求正文:HereGoesContent-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--

答案 2