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
461

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.

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?

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粉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发送文件,服务器重新关联文件和元数据。
      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!