如何在 JAVA 中将 JSON 和文件传递给 REST API?

Posted

技术标签:

【中文标题】如何在 JAVA 中将 JSON 和文件传递给 REST API?【英文标题】:How can I pass JSON as well as File to REST API in JAVA? 【发布时间】:2012-12-06 20:39:25 【问题描述】:

我的主要问题是如何传递 JSON 和文件以将请求发布到 REST API? Spring 框架需要什么作为客户端工作并通过 JSON 和 File 传递 post 来等待响应?

选项:

    我需要将 FileRepresentation 与 ClientResource 一起使用吗?但是如何传递文件以及 JSON? 通过使用 RestTemplate 来传递 JSON 和文件?它如何用于发布 JSON 和文件?

还有其他选择吗?

【问题讨论】:

【参考方案1】:

听起来您正试图公开一个糟糕的资源。我的建议是将它们分成 2 个不同的请求。也许 JSON 具有随后被请求的文件的 URI……

【讨论】:

问题是仅在一个 REST API 请求中传递 JSON 和 File。这是正常工作所必需的。如何在 URI 中传递文件? 这听起来很有趣。您能简要介绍一下为什么需要这样做吗? 对 REST API 的请求是这样的,它需要 JSON 以及要在请求中传递的文件。这怎么可能在单个请求中实现?【参考方案2】:

从 REST(ish) 的角度来看,听起来您传递的资源是 multipart/mixed 内容类型。一种子类型是 application/json,另一种是文件的任何类型。一个或两个都可以是 base64 编码。

您可能需要编写特定的提供程序来序列化/反序列化这些数据。根据特定的 REST 框架,this article 可能会有所帮助。

另一种方法是创建一个封装 json 和文件数据的类。然后,编写特定于该类的提供程序。您可以选择为其创建一个新的内容类型,例如“application/x-combo-file-json”。

【讨论】:

【参考方案3】:

你基本上有三个选择:

    Base64 对文件进行编码,以增加数据大小为代价 约 33%。 首先在 multipart/form-data POST 中发送文件, 并将ID返回给客户端。然后客户端发送元数据 与 ID,服务器重新关联文件和元数据。 先发送元数据,返回一个ID给客户端。客户端 然后发送带有 ID 的文件,服务器重新关联 文件和元数据。

【讨论】:

以上是关于如何在 JAVA 中将 JSON 和文件传递给 REST API?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 docker run 命令中将 Java 选项/变量传递给 Spring Boot 应用程序

iPhone 4 在 Web 视图中将 JSON 字符串传递给 Javascript

在 swift 5.2 con Alamofire 中将数据(json)传递给另一个控制器

如何使用 AFNetworking 在 http 中将 json 数据作为参数传递

如何在 Swift 3.0 中将 TableViewCell 值传递给新的 ViewController?

在 Kotlin Android 中将值传递给函数时进行编译时间检查