我在Laravel中有一个Backend,它基本上是一个REST API,因为我在FronEnd中使用AngularJS并发出ajax请求。
假设我必须为用户制作一个简单的CRUD
我不知道在路由本身中放置一些参数或在表格输入中放置所有参数之间是否有任何区别。
例如:
Route::post('/Users/Update', 'UsersController@update);
然后从:
调用'id'参数Input::get('id')
或
Route::post('/Users/Update/:id', 'UsersController@update);
并将其作为函数更新的参数包括在内:
public function update($id) { }
这两种方式之间有什么真正的区别吗?也许是安全问题?编码标准?还是一样?
我应该只使用Laravel的REST控制器吗?
答案 0 :(得分:1)
如果您正在构建REST API,那么您应该有一个类似example.com/posts/42
而不是example.com/posts?id=42
的网址,因为它更清晰,而且是一种编码标准。
我还会在您的网址中删除大写字符,并且肯定会选择第二种方式。顺便说一下,如果您需要更新用户,您应该使用如下的PUT请求:PUT users/:id
。
答案 1 :(得分:0)
您应该将路线定义为:
Route::put('/users/:userId', 'UsersController@putUser');
您的public function putUser($userId) {}
成功后应返回204 No Content
。
我已将路由更改为PUT
请求,以便更加遵循REST原则。将控制器方法从putUser
更改为update
,可以让我们更好地定义方法要执行的操作。虽然它似乎微不足道,但如果您决定在将来实施更新,它将帮助您区分PUT
和PATCH
更新。我在这里使用了PUT作为方法,但你可以阅读有关PATCH与PUT的内容,并决定你想要遵循REST原则的程度。
至于laravels restful控制器,我觉得他们施加了限制并且没有增加任何真正的好处所以对于REST api我不建议使用它们。