📜  资源路由列表 (1)

📅  最后修改于: 2023-12-03 15:12:13.739000             🧑  作者: Mango

资源路由列表

在Laravel中,资源路由对于快速构建RESTful API是非常方便的。这里介绍怎么使用资源路由列表。

定义资源路由

在Laravel路由中,可以通过以下代码定义资源路由:

Route::resource('photos', 'PhotoController');

这里的photos是资源名称,PhotoController控制器负责处理资源的请求。

通过php artisan route:list代码可以列出所有的路由,可以看到资源路由被自动生成了。

| Method | URI | Action | | -----| ----- | ----- | | GET | /photos | index | | GET | /photos/create | create | | POST | /photos | store | | GET | /photos/{photo} | show | | GET | /photos/{photo}/edit | edit | | PUT/PATCH | /photos/{photo} | update | | DELETE | /photos/{photo} | destroy |

这些路由对应了资源的列表、创建、存储、展示、编辑、更新和删除7个操作。

自定义资源路由

如果只需要资源路由的一部分操作,可以使用only关键字查询指定路由:

Route::resource('posts', 'PostController')->only([
    'index', 'show'
]);

或者使用except关键字来查询路由:

Route::resource('posts', 'PostController')->except([
    'create', 'store', 'update', 'destroy'
]);
命名资源路由

可以给指定资源路由添加自定义的名称。可以使用as方法来实现:

Route::resource('photos', 'PhotoController')->names([
    'create' => 'photos.build'
]);

这里我们将photos.create路由重命名为photos.build

在控制器中处理资源路由

定义好了资源路由之后,可以在控制器中使用对应名称的方法来处理路由。例如,在PhotoController中实现index方法来展示所有的照片。

class PhotoController extends Controller
{
    public function index()
    {
        $photos = App\Photo::all();

        return view('photos.index', ['photos' => $photos]);
    }
}

在实际项目中,我们可能需要先查询用户是否有权访问某个资源,再执行真正的操作。例如可以通过Laravel中的授权策略来实现。

总结

这里介绍了通过资源路由来定义RESTful API,以及如何自定义、命名和处理这些路由。这是Laravel中一个常用的功能,熟练掌握资源路由的使用可以为项目的开发带来缩短时间,提高效率的好处。