Laravel 路由参数和表单参数
Posted
技术标签:
【中文标题】Laravel 路由参数和表单参数【英文标题】:Laravel Route Params and Form Params 【发布时间】:2014-07-21 21:12:42 【问题描述】:我在 Laravel 中有一个后端,它基本上是一个 REST API,因为我在 FronEnd 中使用 AngularJS 并发出 ajax 请求。
假设我必须为用户制作一个简单的 CRUD
而且我不知道将某些参数放在Route本身或将它们全部放在Form Input中是否有任何区别。
例如:
Route::post('/Users/Update', 'UsersController@update);
然后调用 'id' 参数 from:
Input::get('id')
或
Route::post('/Users/Update/:id', 'UsersController@update);
并将其作为函数更新的参数包括:
public function update($id)
这两种方式有什么真正的区别吗?也许安全问题?编码标准?还是一样?
我应该只使用 Laravel 的 REST 控制器吗?
【问题讨论】:
【参考方案1】:如果你正在构建一个 REST API,你应该有一个类似 example.com/posts/42
的 URL,而不是 example.com/posts?id=42
,因为它更简洁并且是一个编码标准。
我还会在您的 URL 中删除大写字符,并且肯定会选择您的第二个实现选择。顺便说一句,如果您需要更新用户,您应该使用这样的 PUT 请求:PUT users/:id
。
【讨论】:
我只是在阅读有关 PUT 和 DELETE 的内容,因为我之前听说过有不安全的但我不知道他们说过。 @GabrielMatusevich 为什么他们会不安全?它们与其他 HTTP 方法一样安全。看看***选择正确的 HTTP 方法:en.wikipedia.org/wiki/… 我不确定,我认为某些浏览器不支持它们 @GabrielMatusevich 当您在表单中使用 PUT 方法时,Laravel 将表单中的 PUT 请求作为 POST 处理。但如果您正在构建 API,您可能会从其他服务器调用它/命令行界面/移动应用程序。他们完美地处理了这个! @GabrielMatusevich 我的 PUT 方法来源:laravel.com/docs/html#opening-a-form 它开始于:Since HTML forms only support POST...
【参考方案2】:
简洁的一些固执己见的答案:
您应该将您的路线定义为:
Route::put('/users/:userId', 'UsersController@putUser');
您的public function putUser($userId)
应该在成功时返回204 No Content
。
推理:
我已将路由更改为 PUT
请求,以更严格地遵循 REST 原则。将控制器方法从update
更改为putUser
可以让我们更好地定义该方法打算做什么。虽然看起来微不足道,但如果您决定在未来实施更新,它将帮助您区分 PUT
和 PATCH
更新。我在这里使用 PUT 作为方法,但您可以阅读有关 PATCH 与 PUT 的信息,并决定您希望在多大程度上遵循 REST 原则。
至于 laravel 的 RESTful 控制器,我觉得它们施加了限制并且没有增加任何真正的好处,所以对于 REST api,我不建议使用它们。
【讨论】:
以上是关于Laravel 路由参数和表单参数的主要内容,如果未能解决你的问题,请参考以下文章