【问题标题】:REST API Design and framing the URL [duplicate]REST API 设计和构建 URL [重复]
【发布时间】:2021-01-01 20:01:35
【问题描述】:

我需要提出 API 开发的最佳实践,我们有 100 多个端点要开发,每个端点都需要具有下面提到的属性,这些属性通常作为请求传递给服务器

  1. 每个请求都必须包含语言代码(en-us 或 en-ca)、部门(hr 或 Finance)和国家/地区(US 或 CANADA)参数
  2. 需要为 web(v1) 和 ipad(v2) 创建两个版本的 apis

想知道通过考虑以上 2 点来构建 api url 的最佳方法是什么

我打算做下面提到的版本控制,但对如何在请求中合并上面提到的 2 点感到困惑(请求参数或通过标头或请求正文本身)

app/v1/api/url
app/v2/api/url

【问题讨论】:

  • 为什么您需要为 web 和 ipad 使用不同的 API?您可以使用 Accept-Language 标头在语言之间切换

标签: api rest localization api-design


【解决方案1】:

我认为有很多关于 REST API 设计的好资源,例如12。你应该阅读它们。

所以我会为您的语言、部门和国家/地区使用查询参数。这些就像在您的大多数 API 之间共享的元数据。

app/v1/api/url?lang=en&div=hr&country=es

关于您的第二点,我不确定您是否应该区分不同的设备类型。但这可能是必要的。如果是这样,请从您的设备类型开始。因为它可能会对您的权限框架有所帮助。

app/v1/api/url
web/v1/api/url

app/api/v1/url
web/api/v1/url

希望这会有所帮助。

更新 1 我喜欢@Evert 的想法,使用Accept-Language,我认为它更好,因为它是standard http header field

【讨论】:

  • 感谢@Christian 的快速响应,确实将Accept-Language 作为标题的一部分是一个好主意。“Division”属性也可以在标题中传递吗?
  • 我猜不是。请查看我发布的标准 http 标头字段链接。
猜你喜欢
  • 2020-09-18
  • 1970-01-01
  • 2021-08-13
  • 1970-01-01
  • 2023-03-29
  • 2014-10-06
  • 2020-08-29
  • 2021-08-08
  • 2021-02-02
相关资源
最近更新 更多