NginxcachingREST API

我们有一个移动应用程序调用REST API来获取在移动主屏幕上显示的图块列表。 身份validation机制是使用我们唯一标识用户的AUTH令牌。 菜单不断变化,取决于应用程序的版本。 为此,我们有两种方法。

  1. /api/tilemenus (仅传递validation标题而不是版本)

检索auth头并在db表中查找应用程序的版本(我们也将用户版本存储在数据库中,并在用户升级应用程序时进行更新)并相应返回数据。

  1. /api/tilemenus/1.2.2 (由于客户端知道它自己的版本,所以/api/tilemenus/1.2.2传递auth头文件和版本)

在这里,因为版本在REST请求本身中传递,所以不需要数据库查找。

哪种方法更好? 我认为方法2更好,因为我们可以传递caching头来caching每个版本的API。 对于方法1,当用户升级应用程序时,没有隐含的方式来放弃这个caching。

在URI路径中传递API版本是很常见的(也请看这个问题 )。 我建议使用第二个选项,虽然将其重写为/api/1.2.2/tilemenus ,这看起来更类似于API如何在一些热门网站上运行。

在我看来,#2是更好的,因为你强制保证一个特定的URL总是返回相同的资源/数据,是的,你可以安全地缓存它。

另外,仅通过分析HTTP服务器日志就可以更轻松地跟踪版本使用情况。

它甚至可以让你记住用户版本的工作,因为#2通过请求URL本身使其明确