如何将帐户 ID 传递给 REST API
How to pass Account ID to a REST API
我的 HTTP API 要求前端在 API 调用上传递 accountId
,因为我们支持 admin
未绑定到单个帐户的用户并且可以查询任何帐户。
最初我将其实现为 header
这里的问题是缓存不起作用。
当前的实现看起来像 api.com/endpoint?accountId=123
,但效果很好 - 我想了解在实现 RESTful HTTP API.[=16= 时这是否是正确的方法]
更新:
根据评论 - 这是 GET
IMO,您通过将此信息放在 HTTP header 中来“以正确的方式”(TM) 做事——这似乎是它存在的正确位置。然而,您的缓存系统目前并不关心 HTTP headers,因此这给您留下了一个实际问题(它并不真正关心“正确的方式”)。所以...
基于此,听起来您有两个选择:
- 修复您的缓存以将特定的 header 作为缓存键的一部分,或者
- 将相关信息添加到 URL 用于缓存目的
我建议 (1) 将缓存键更新为 URL 的散列 + 其他会导致不同结果的相关信息(在本例中,HTTP header 包括帐户 ID 或 session 信息)。这使您可以将信息放在正确的位置,同时也不会导致缓存页面出现问题。
当然这可能是不可能的,所以我能为您提供的唯一实用解决方案是 (2) 将内容拉入 URL 以支持缓存。我认为这是一个 anti-pattern,但它会完成工作。
我的 HTTP API 要求前端在 API 调用上传递 accountId
,因为我们支持 admin
未绑定到单个帐户的用户并且可以查询任何帐户。
最初我将其实现为 header
这里的问题是缓存不起作用。
当前的实现看起来像 api.com/endpoint?accountId=123
,但效果很好 - 我想了解在实现 RESTful HTTP API.[=16= 时这是否是正确的方法]
更新:
根据评论 - 这是 GET
IMO,您通过将此信息放在 HTTP header 中来“以正确的方式”(TM) 做事——这似乎是它存在的正确位置。然而,您的缓存系统目前并不关心 HTTP headers,因此这给您留下了一个实际问题(它并不真正关心“正确的方式”)。所以...
基于此,听起来您有两个选择:
- 修复您的缓存以将特定的 header 作为缓存键的一部分,或者
- 将相关信息添加到 URL 用于缓存目的
我建议 (1) 将缓存键更新为 URL 的散列 + 其他会导致不同结果的相关信息(在本例中,HTTP header 包括帐户 ID 或 session 信息)。这使您可以将信息放在正确的位置,同时也不会导致缓存页面出现问题。
当然这可能是不可能的,所以我能为您提供的唯一实用解决方案是 (2) 将内容拉入 URL 以支持缓存。我认为这是一个 anti-pattern,但它会完成工作。