选择正确的 Http 方法

Choosing correct Http method

我有一个学生资源和一个课程资源,我需要编写一个控制器和方法来注册和取消注册学生。我应该使用哪种正确的 http 方法来注册和取消注册。

What is the right type of http method should i use for enroll and disenroll.

EnrollDisenroll 听起来像是您希望更改资源的表示(可能不止一个)。因此,您可以立即关闭任何 safe 方法(GET、HEAD、OPTIONS 等)。

设计 REST api 的一个很好的启发式方法是将其建模为网站。那么用于招生的网站 UI 会是什么样子呢?大概是一堆带表单的页面,提交表单的时候,你换资源。

我们知道答案是表单,因为网页上的链接隐式链接到安全的 GET 方法,这不是更改资源的好选择。同样,我们知道表单的方法也需要是不安全的。 HTML 表单支持的唯一不安全方法是 POST;事实证明这很好。

另一种选择是在远程创作环境中为您的 API 建模。在这个习惯用法中,客户端会将资源的表示加载到它的编辑器中,进行更改,然后将更改后的表示发送回服务器。 PUT is the simplest choice - sending the entire modified representation back to the server. PATCH 是一个可以接受的替代方案,如果您只想将编辑内容发送到服务器。

重点是为您的域提供一个接口,该接口可以很好地与通用 http 组件配合使用。缓存和浏览器可以使用表示做正确的事情,而无需了解您的消息的细节。