如果我有一个返回图像的web服务,是否有一种标准方法可以让它返回一些结构化数据(在最简单的情况下,是一个额外的字符串或数字)?
有关返回图像的Web服务的PHP示例,请参阅this question。 (但我现在的问题并不是特定于PHP。)
可能的解决方案(大多数不是很令人满意):
答案 0 :(得分:2)
返回以base64编码的图像二进制数据和附加字段:
{ image: "mIIerhdkwje...", data: "data" }
Base64编码为您提供33%的开销(每3个原始字节需要4个字节)。根据数据的大小,最好用二进制数据的url替换它并发出第二个请求......
答案 1 :(得分:2)
HTTP标头是可行的选择,因为它们可以在服务器端和客户端轻松解析。您可以做的另一件事是设置302,将其重定向到URL中的图像和数据(例如 - >
这对用户是透明的,大多数API客户端都可以工作(因为它们处理重定向)
答案 2 :(得分:1)
协议缓冲区是另一种选择。协议缓冲区不是自描述的,如XML或JSON,但它们在线上更加紧凑。 Google图书馆(http://code.google.com/p/protobuf)提供了C ++,Java和Python库,而贡献者也为许多其他语言提供了图书馆(http://code.google.com/p / protobuf / wiki / ThirdPartyAddOns),包括Javascript和PHP,因此客户编写者应该可以轻松使用该格式。
答案 3 :(得分:0)
是不是可以在返回的json / xml中包含二进制数据来形成图像?通过这种方式,您可以根据需要添加任意数量的字段,并且可以在客户端中处理此信息。