Veröffentlichen Sie Dateien und zugehörige Daten im JSON-Format an RESTful WebService
P粉056618053
P粉056618053 2023-08-20 13:47:10
0
2
508
<p>In der Anwendung, die ich entwickle, möchten wir, dass der Client Daten im JSON-Format sendet, deshalb entwickle ich eine RESTful-API. Ein Teil der Anwendung erfordert, dass der Client eine Datei (normalerweise ein Bild) zusammen mit Informationen über das Bild hochlädt. </p> <p>Ich habe Probleme, herauszufinden, wie ich dies in einer einzigen Anfrage erreichen kann. Ist es möglich, Dateidaten mit Base64 in einen JSON-String zu kodieren? Muss ich zwei POST-Anfragen an den Server stellen? Sollte ich dafür nicht JSON verwenden? </p> <p>Außerdem verwenden wir Grails im Backend, und auf diese Dienste kann über native mobile Clients (iPhone, Android usw.) zugegriffen werden, wenn diese Informationen abweichen. </p>
P粉056618053
P粉056618053

Antworte allen(2)
P粉994092873

您可以使用 multipart/form-data 内容类型在一个请求中发送文件和数据:

来自 http://www.faqs.org/rfcs/rfc2388.html

您可以在每个边界之间的每个部分中包含文件信息或字段信息。我已经成功地实现了一个需要用户提交数据和表单的RESTful服务,multipart/form-data完美地工作。该服务使用Java/Spring构建,客户端使用C#,所以很遗憾我没有Grails的示例可以提供给您关于如何设置服务。在这种情况下,您不需要使用JSON,因为每个“form-data”部分都为您提供了指定参数名称及其值的位置。

使用multipart/form-data的好处是您正在使用HTTP定义的头部,因此您遵循了使用现有HTTP工具创建服务的REST理念。

P粉145543872

我在这里问了一个类似的问题:

如何使用REST Web服务上传带有元数据的文件?

你基本上有三种选择:

  1. 对文件进行Base64编码,但会增加数据大小约33%,并在服务器和客户端中增加编码/解码的处理开销。
  2. 首先以multipart/form-data的形式发送文件,并将ID返回给客户端。然后客户端使用该ID发送元数据,服务器重新关联文件和元数据。
  3. 首先发送元数据,并将ID返回给客户端。然后客户端使用该ID发送文件,服务器重新关联文件和元数据。
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!