Sails.js 创建的 REST API 真的是 RESTful 并遵循约定吗?

Is REST API created by Sails.js really RESTful and following the convention?

根据我正在阅读的一本书和几篇文章,指定 REST 的方法 API 是利用大多数 HTTP 方法,而不是将 GET 方法引入创建,它在演示中的显示方式Sails.js,您只需向

发出 GET 请求即可创建模型实例
/modelName/create?property=value

嗯,那根本不是 RESTful。相反,我们应该向 /modelName 发出 PUT 请求。或者,我在这里遗漏了什么吗?

在 REST API 中,用户几乎可以通过两种方式创建所有资源。

  1. A POST 到将包含新资源的集合:

    [Request]
    POST /gizmos
    {
        "name": "widget"
    }
    
    [Response]
    201 Created
    Location: /gizmos/71
    
  2. 或者一个PUT的新资源直接到它的位置:

    [Request]
    PUT /gizmos/71
    {
        "name": "widget"
    }
    
    [Response]
    204 No Content
    

通过 GET /gizmos/create 创建资源是错误的。

  • GET 不应更改服务上的任何内容。做 0、1 或 1000 次应该都具有相同的效果:没有效果。
  • URL 中不应该有动词。 URL 应该是一个名词。 HTTP 方法 - GETPOSTPUTDELETE - 是动词。

是的,你是。您从演示中学到的是从浏览器 url 栏访问休息操作的快捷方式或助手,这根本不是 restful。它用于测试目的(默认启用),不应在生产中使用。

使用 http 动词向您的控制器发出请求,例如对 /user/1DELETE 请求将删除 ID 为 1 的用户。这非常 restful。