【发布时间】:2010-10-15 14:10:52
【问题描述】:
我们有基于 HTTP 的 restful api。在其他客户端中,我们还有移动设备客户端(例如 iphone)。问题是那里有几个不同版本的 iPhone 应用程序(1.0、2.0)。因为它们是分布式的,所以我们无法控制调用我们的应用程序版本。
为了在服务器端识别应用程序版本,我看到以下选项:
- 设备必须附加 URL 参数(例如 /foo?iphone-app-version=1.0):有点恶心,但好消息是我总是可以在服务器日志中看到它(总是记录 URL)
- 我们使用 HTTP 摘要对 api-clients 进行身份验证。我们可以在用户名中编码应用程序版本(例如 iphone_1_0):好在它记录在服务器日志中,但仅适用于作为 HTTP 摘要公开的资源。
- 设备必须使用自定义 HTTP 标头,例如X-IPHONE-APP-VERSION:在我看来是最干净的方法,但我们不会在服务器日志中记录 HTTP 标头(对于日志噪音,它已关闭)。所以后面的分析是不可能的。
您有首选方法或任何其他替代方法吗?
编辑:上面的版本控制不是指 api-versioning/content-negotiation。它是移动设备的版本。
【问题讨论】:
标签: iphone http rest mobile http-headers