Laravel路由参数和表单参数


Laravel Route Params and Form Params

我在Laravel中有一个后端,这基本上是一个REST API,因为我在前端使用AngularJS并发出ajax请求。

假设我要为Users创建一个简单的CRUD

我不知道把一些参数放在Route本身和把它们全部放在Form Input中有什么区别。

例如:

Route::post('/Users/Update', 'UsersController@update);

然后从

调用'id'参数:
Input::get('id')

Route::post('/Users/Update/:id', 'UsersController@update);

,并将其作为函数update的参数,如:

public function update($id) { }

这两种方式有什么真正的区别吗?也许是安全问题?编码标准?还是一样?

我应该使用Laravel的REST控制器吗?

如果你正在构建一个REST API,你应该有一个像example.com/posts/42而不是example.com/posts?id=42的URL,因为它更干净,它是一个编码标准。

我也会在你的url中删除大写字符,并绝对采用你的第二种实现选择。顺便说一下,如果你需要更新一个用户,你应该使用PUT请求,像这样:PUT users/:id .

简明扼要的回答:

你应该把你的路由定义为:

Route::put('/users/:userId', 'UsersController@putUser');

你的public function putUser($userId) {}应该在成功时返回一个204 No Content

推理:

我已经将路由更改为PUT请求,以更紧密地遵循REST原则。将控制器方法从update更改为putUser允许我们更好地定义该方法打算做什么。虽然它看起来微不足道,但如果您将来决定实现PUTPATCH更新,它将帮助您区分它们。我在这里使用PUT作为方法,但你可以阅读关于PATCH和PUT的文章,并决定你想在多大程度上遵循REST原则。

对于laravvels REST式控制器,我觉得它们施加了限制,没有增加真正的好处,所以我不建议使用它们。