我在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
允许我们更好地定义该方法打算做什么。虽然它看起来微不足道,但如果您将来决定实现PUT
和PATCH
更新,它将帮助您区分它们。我在这里使用PUT作为方法,但你可以阅读关于PATCH和PUT的文章,并决定你想在多大程度上遵循REST原则。
对于laravvels REST式控制器,我觉得它们施加了限制,没有增加真正的好处,所以我不建议使用它们。