API 的路由需要有多具体?

How specific does an API's routing need to be?

我正在创建一个 API,我有一个可以通过调用请求的用户:

/api/request/user/{id}

这很好用。

假设每个用户都有一套技能,可以是一个技能,也可以是 100 个。

我想获得特定用户的所有技能。

我会不会非常具体,这样你就必须打电话给:

/api/request/user/{id}/skills

或者这样做:

/api/request/skills/{id}(其中 {id} 是用户的 id

够了吗?

是否有我应该遵循的 REST API 标准或者它是否灵活?

非常感谢任何建议,谢谢。

由于 skills 是用户的 属性,我们将其视为 sub-resource。得到sub-resources是基于嵌套URL(hierarchical way),所以/api/request/user/{id}/skills就太棒了!

/api/request/skills/{id} 情况下 id 应该是技能的标识符,以使您的 API 直观。

还要记住命名 convention。请保持一致,您的 skills 资源是复数,所以让我们将 user 重命名为 users.

所以,总结一下

/api/request/users/{user_id}

/api/request/users/{user_id}/skills

/api/request/skills/{skill_id}

会很好。