REST API 设计端点(操作/动词 => 名词/资源)

2024-01-10

根据本指南 https://hackernoon.com/restful-api-designing-guidelines-the-best-practices-60e1d954e7c9在设计 REST API 端点时,我们永远不应该在 URL 中使用动作/动词(例如/addNewEmployee),如果我们想要执行一个操作,我们应该只使用带有相应资源/名词的 HTTP 动词(例如POST /employees).

现在,我有一个名为themes,我围绕它创建了以下端点:

GET /themes(列出所有主题)

GET /themes/:name(列出具有给定名称的单个主题)

我想创建另一个端点,通过它我可以执行一个操作(即切换主题),这个操作将会改变current_theme字段值在Settings数据库中的表。我不确定做到这一点的最佳实践是 REST API 时尚,并且对消费者来说也是直观的。

我可以做这个POST /themes/changeTheme or PUT /themes/:name/activate但再一次changeTheme and activate是动词。我也可以这样做PUT /settings但从 API 消费者的角度来看,这似乎并不直观。请指导我在这种情况下应该如何进行。


我知道这是一个老问题,但我只是想补充一些内容。

我想创建另一个端点,通过它我可以执行操作(即切换主题),此操作将更改数据库中设置表中的 current_theme 字段值。我不确定做到这一点的最佳实践是 REST API 时尚,并且对消费者来说也是直观的。

如果您阅读了bold仔细部分,它改变了一些东西(current_theme) 在里面Settings资源,而不是Theme本身。 在我看来,Theme不应该担心是否是active主题与否。

考虑到这一点,我将其设计为:

PUT /settings/current-theme
{"themeId": "<some-id>"}

而且我认为它足够直观。

  • PUT说这是更新,
  • /settings/current-theme说正在更新currentTheme的财产Settings资源,以及
  • the Body为属性提供新值

当然你可以有PUT /settings/:id/current-theme如果您从其他资源池中选择该资源。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

REST API 设计端点(操作/动词 => 名词/资源) 的相关文章

随机推荐