RESTAPI设计端点(动作/动词=>;名词/资源)
根据REST API端点的设计原则,我们不应该在URL中使用动作/动词(例如RESTAPI设计端点(动作/动词=>;名词/资源),rest,api,resources,httpverbs,Rest,Api,Resources,Httpverbs,根据REST API端点的设计原则,我们不应该在URL中使用动作/动词(例如/addNewEmployee),如果我们想执行动作,我们应该只使用HTTP动词和相应的资源/名词(例如POST/employees) 现在,我有了一个名为themes的资源,我围绕它创建了以下端点: GET/themes(列出所有主题) GET/themes/:name(列出具有给定名称的单个主题) 我想创建另一个端点,通过它我可以执行操作(即切换主题),此操作将更改数据库中设置表中的当前主题字段值。我不确定做这件事的
/addNewEmployee
),如果我们想执行动作,我们应该只使用HTTP动词和相应的资源/名词(例如POST/employees
)
现在,我有了一个名为themes
的资源,我围绕它创建了以下端点:
GET/themes
(列出所有主题)
GET/themes/:name
(列出具有给定名称的单个主题)
我想创建另一个端点,通过它我可以执行操作(即切换主题),此操作将更改数据库中设置表中的当前主题字段值。我不确定做这件事的最佳实践是什么,这是RESTAPI的时尚,对消费者来说也是直观的
我可以这样做POST/themes/changeTheme
或PUT/themes/:name/activate
但同样changeTheme
和activate
是动词。我也可以这样做PUT/settings
,但从API消费者的角度来看,这似乎并不直观。请指导我在这种情况下应该如何进行
根据本RESTAPI端点设计指南,我们不应该在URL中使用动作/动词
REST不关心标识符的拼写。这是问题的一部分<代码>/e25928c5-7b4e-44b8-be83-24ed9c9f8d3b
是一个完美的精细标识符
在这个问题上谈得很好
请指导我在这种情况下应该如何进行
想一想你会如何使用一个网站。你可能会在某个页面上,有一堆链接,其中一个上面有一个标签,像changeTheme。您将单击该链接,并显示一个包含表单的新页面,其中包含可用主题的列表。您可以从列表中选择想要的主题,然后提交表单。该请求将转到后端,更新某些资源。作为一个副作用,你的主题记录会被改变。您可能会收到一条消息,告诉您已经进行了更改,并将您重定向到开始的位置
这就是休息
因此,您正在寻找的名词是集成域中的名词,您正在使用这些名词来导航变更主题协议;换句话说,它们是表单和表单提交收件箱
吉姆·韦伯(Jim Webber)将网络模型描述为20世纪50年代的办公室模型;您可以通过检索表单、填写表单并将其放入收件箱来完成工作
你想要的心理映射不是一个动作(太粗体了),而是一个请求——你正在发送一条信息,要求其他人采取你需要的动作。实际行动是副作用。因此,“表单提交收件箱”是挂起的“更改主题”请求的集合
不管当地的拼写习惯是什么,你都可以使用
不要认为资源是你的领域的代表;这些资源支持您的集成协议,并且这些资源的名称来自集成域的语言,而不是业务域的语言
对于向服务器发送请求,几乎总是可以接受的选择。记住,我们在这里是因为web工作,从只支持GET和POST开始
PUT /themes/:name
这意味着你将改变这个单一的主题。您可以传递一些属性,并且只更改它们 PUT/themes/:name
也可能意味着更改主题本身。我建议使用PUT/active theme/:name
和PUT/themes/:name
作为不同的端点。