【问题标题】:Which http request method should I use in Laravel routes?我应该在 Laravel 路由中使用哪种 http 请求方法?
【发布时间】:2019-07-05 17:33:58
【问题描述】:

我正在 Laravel 5.7 中开发一个 rest api。我知道如何制作 api 控制器以及如何定义适当的 api 资源路由,参考控制器中的相应方法,如下所示:

Route::apiResource('platforms', 'PlatformController');

但是,当我尝试在控制器中定义其他一些方法而不是五个 restful 控制器方法(索引、存储、显示、更新和删除)时,我不确定应该使用哪种 HTTP 请求方法。例如,当我在控制器中定义一个用于在数据库中切换布尔值的函数时,“Get”、“Post”或“put”方法都可以工作。那么,哪一个是最好的选择呢?

【问题讨论】:

  • 您的问题很可能会引起固执己见的回答。但是您是否考虑过“PUT”,因为正如我所见,您只是更新数据库中的一个布尔值?
  • 好吧,那没关系,不是吗?否则你可以使用PATCH。另一种选择是创建一个新的 PUT 路由,它只是执行最中立的选项。 GET 动词是一个不号。
  • 我在发布之前的评论时犯了一个错误。是的,有一个切换动作的新路径,它与我形成的请求验证无关。所以我将在新路由中使用 PUT 或 Patch。太感谢了。但最后一个问题是,在这种特定情况下(切换状态)Put 和 Patch 有区别吗?
  • 请注意,我意识到您的问题已解决。最好检查已经给出的答案或发布问题的解决方案,以便其他人在将来发现它有帮助。然而,至于你的问题,PATCH 和 PUT 一直在争论,但是,在这种情况下,我宁愿说一致性比 正确性 更重要。 PUT 需要更新完整但已修改的对象,PATCH 需要更新对象的一部分。所以,由你来选择......见:google.com/search?q=patch+request&oq=patch+request
  • 非常感谢您的指导。这很有帮助。实际上,因为我刚刚注册,所以我无法评价答案...

标签: laravel routes httprequest


【解决方案1】:

这里是基本的路线描述 你可以从

了解更多

https://laravel.com/docs/5.7/routing

┌────────┬─────────┬──────────────────────────────────┬────────────────────────┐
│ HTTP   │ CRUD    │ ENTIRE COLLECTION (e.g /USERS)   │ SPECIFIC ITEM          │
│ METHOD │         │                                  │ (e.g. /USERS/123)      │
├────────┼─────────┼──────────────────────────────────┼────────────────────────┤
│ POST   │ Create  │ 201 (Created), 'Location'        │ Avoid using POST       │
│        │         │ with header link to /users/{id}  │ on single resource     │
│        │         │ containing new ID.               │                        │
├────────┼─────────┼──────────────────────────────────┼────────────────────────┤
│ GET    │ Read    │ 200 (OK), list of users. Use     │ 200 (OK), single user  │
│        │         │ pagination, sorting and          │ 404 (Not Found), If ID │
│        │         │ filtering to navigate big lists. │ not found or invalid.  │
├────────┼─────────┼──────────────────────────────────┼────────────────────────┤
│ PUT    │ Update/ │ 404 (Not Found), unless you want │ 200 (OK), or 204 (No   │
│        │ Replace │ to update every resource in the  │ Content). Use 404 (Not │
│        │         │ entire collection of resource.   │ Found). If ID not      │
│        │         │                                  │ found or invalid.      │
├────────┼─────────┼──────────────────────────────────┼────────────────────────┤
│ PATCH  │ Partial │ 404 (Not Found), unless you want │ 200 (OK), or 204 (No   │
│        │ Update/ │ to modify the collection itself. │ Content). Use 404 (Not │
│        │ Modify  │                                  │ Found). If ID not      │
│        │         │                                  │ found or invalid.      │
├────────┼─────────┼──────────────────────────────────┼────────────────────────┤
│ DELETE │ Delete  │ 404 (Not Found), unless you want │ 200 (OK), 404 (Not     │
│        │         │ to delete the whole collection - │ Fpund). If ID not      │
│        │         │ use with caution.                │ found or invalid       │
└────────┴─────────┴──────────────────────────────────┴────────────────────────┘

【讨论】:

    【解决方案2】:

    这里是使用http方法的基本规则,

    GET : 当您需要获取或检索信息时

    POST : 当你需要创建或插入信息时

    PUT : 当你需要更新现有记录时

    有关更多信息,您可以使用此链接。

    https://restfulapi.net/http-methods/

    【讨论】:

      【解决方案3】:

      补充 Lokesh 对 Laravel 的回答。 “index”方法在从数据库中检索记录时使用 GET REQUEST。 “存储”方法使用 POST REQUEST,因为它将记录存储在数据库中。 “更新”方法使用 PUT REQUEST 更新数据库中的记录。 “show”方法使用 GET REQUEST,因为它从数据库中检索单个记录。 "delete" 方法在从数据库中检索单个记录时使用 DELETE REQUEST。

      因此,如果您想更改数据库中的记录,您可能需要使用 POST/PUT REQUEST。在切换状态时,标准选项是使用 PUT,因为您正在更新记录。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-08-21
        • 1970-01-01
        • 1970-01-01
        • 2020-01-08
        • 2023-03-27
        • 2010-12-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多