客户端解释从 Web 返回的数据 Api
Client interpret data returned from Web Api
我目前有网络 api 服务,该服务采用参数来确定我应该 return xml 还是 json。
我还有一个服务,它没有明确规定数据应该 return 编辑成什么(这样 Jquery 这样的客户端可以规定内容 return 类型).
因为从带宽的角度来看 XML 比 return 昂贵(我的云运营商会花费我更多的钱)是否可以将客户端限制为仅 JSON以任何方式?
我已经计算过了,XML 的脂肪是 JSON 的 9 倍 - 成本是后者的 9 倍!!
关于如何最大限度地减少 public API 的托管成本的任何其他想法,非常感谢!?
谢谢
我可以做到以下几点:
return Content(HttpStatusCode.OK, returnList, Configuration.Formatters.JsonFormatter);
有效,但如果客户端将内容类型设置为 xml,则会导致解析错误。
这是一个解决方案,但是否理想?
首先,您可以利用基于 header Accept
的 REST 的连接功能(内容协商)来指定响应内容而不是参数的预期格式。如果您希望 JSON 内容被 return 返回,只需在您的请求中添加:
Accept: "application/json"
真的很难回答你的问题;-)。这个级别能不能多给点提示?
如果你掌握了网络API,我们可以考虑这样的事情:
- 阻止内容协商 (conneg)。如果客户端指定它需要 XML 内容,您可以发回 HTTP 状态代码
415
(不支持的媒体类型)。
- 在XML的情况下忽略请求的格式。你只是简单地只支持 JSON 格式...你总是 return 这种格式。
您还可以在服务器端实施优化:
- 发回前压缩内容。它可以简单地包含缩小甚至 zip 压缩(但它需要客户端解压缩内容)。 bean/格式转换器(例如,Jackson)通常支持缩小。
- Server-side 缓存。根据您的应用程序的用途,您可以添加一些缓存而不总是请求您的数据存储。
希望对您有所帮助,
蒂埃里
我目前有网络 api 服务,该服务采用参数来确定我应该 return xml 还是 json。
我还有一个服务,它没有明确规定数据应该 return 编辑成什么(这样 Jquery 这样的客户端可以规定内容 return 类型).
因为从带宽的角度来看 XML 比 return 昂贵(我的云运营商会花费我更多的钱)是否可以将客户端限制为仅 JSON以任何方式?
我已经计算过了,XML 的脂肪是 JSON 的 9 倍 - 成本是后者的 9 倍!!
关于如何最大限度地减少 public API 的托管成本的任何其他想法,非常感谢!?
谢谢
我可以做到以下几点:
return Content(HttpStatusCode.OK, returnList, Configuration.Formatters.JsonFormatter);
有效,但如果客户端将内容类型设置为 xml,则会导致解析错误。
这是一个解决方案,但是否理想?
首先,您可以利用基于 header Accept
的 REST 的连接功能(内容协商)来指定响应内容而不是参数的预期格式。如果您希望 JSON 内容被 return 返回,只需在您的请求中添加:
Accept: "application/json"
真的很难回答你的问题;-)。这个级别能不能多给点提示?
如果你掌握了网络API,我们可以考虑这样的事情:
- 阻止内容协商 (conneg)。如果客户端指定它需要 XML 内容,您可以发回 HTTP 状态代码
415
(不支持的媒体类型)。 - 在XML的情况下忽略请求的格式。你只是简单地只支持 JSON 格式...你总是 return 这种格式。
您还可以在服务器端实施优化:
- 发回前压缩内容。它可以简单地包含缩小甚至 zip 压缩(但它需要客户端解压缩内容)。 bean/格式转换器(例如,Jackson)通常支持缩小。
- Server-side 缓存。根据您的应用程序的用途,您可以添加一些缓存而不总是请求您的数据存储。
希望对您有所帮助, 蒂埃里