首页 > 其他分享 >Laravel Resource Routes和API Resource Routes讲解

Laravel Resource Routes和API Resource Routes讲解

时间:2024-05-15 15:19:44浏览次数:19  
标签:Laravel function Resource posts API Routes public

在 Laravel 中,Resource Routes 和 API Resource Routes 是两种用于定义 RESTful 路由的便捷方法。它们帮助开发者快速创建遵循 RESTful 标准的路由集合,分别适用于普通 Web 应用和 API 应用。

Resource Routes

Resource Routes 是为传统的 Web 应用设计的,它们生成了一组常见的 CRUD 路由,同时适用于 Web 中间件组。要定义 Resource Routes,可以使用 Route::resource 方法。下面是一个示例:

use Illuminate\Support\Facades\Route;

Route::resource('posts', 'PostController');

这条命令会生成以下七个路由:

HTTP Method URL Action Route Name
GET /posts index posts.index
GET /posts/create create posts.create
POST /posts store posts.store
GET /posts/ show posts.show
GET /posts/{post}/edit edit posts.edit
PUT/PATCH /posts/ update posts.update
DELETE /posts/ destroy posts.destroy

这些路由适用于处理 Web 请求,因此会加载 web 中间件组,默认情况下包含会话管理、CSRF 保护等功能。

API Resource Routes

API Resource Routes 类似于 Resource Routes,但它们是为 API 设计的,通常不包含会话和 CSRF 保护。使用 Route::apiResource 方法可以定义 API Resource Routes。

use Illuminate\Support\Facades\Route;

Route::apiResource('posts', 'PostController');

这条命令生成的路由与 Route::resource 大致相同,但省略了用于显示和编辑的路由:

HTTP Method URL Action Route Name
GET /posts index posts.index
POST /posts store posts.store
GET /posts/ show posts.show
PUT/PATCH /posts/ update posts.update
DELETE /posts/ destroy posts.destroy

比较与选择

  • Resource Routes

    • 包含所有七个 RESTful 动作:index、create、store、show、edit、update、destroy。
    • 适用于传统 Web 应用,需要会话、CSRF 保护等功能。
    • 使用 Route::resource 方法定义。
  • API Resource Routes

    • 省略 create 和 edit 路由,仅包含 index、store、show、update、destroy。
    • 适用于 API 应用,不需要会话和 CSRF 保护。
    • 使用 Route::apiResource 方法定义。

示例:定义和使用

Resource Routes 示例

控制器方法示例:

class PostController extends Controller
{
    public function index()
    {
        // 显示所有资源
    }

    public function create()
    {
        // 显示创建资源的表单
    }

    public function store(Request $request)
    {
        // 存储新资源
    }

    public function show($id)
    {
        // 显示单个资源
    }

    public function edit($id)
    {
        // 显示编辑资源的表单
    }

    public function update(Request $request, $id)
    {
        // 更新资源
    }

    public function destroy($id)
    {
        // 删除资源
    }
}

API Resource Routes 示例

控制器方法示例:

class PostController extends Controller
{
    public function index()
    {
        // 返回所有资源
    }

    public function store(Request $request)
    {
        // 存储新资源
    }

    public function show($id)
    {
        // 返回单个资源
    }

    public function update(Request $request, $id)
    {
        // 更新资源
    }

    public function destroy($id)
    {
        // 删除资源
    }
}

选择哪种路由定义方法取决于你的应用需求。如果你开发的是一个需要视图和表单的传统 Web 应用,使用 Resource Routes。如果你开发的是 RESTful API 服务,使用 API Resource Routes 更为合适。

标签:Laravel,function,Resource,posts,API,Routes,public
From: https://www.cnblogs.com/laraveler/p/18193927

相关文章

  • RouteServiceProvider代码讲解
    这段代码是Laravel框架中RouteServiceProvider类的一部分,用于配置应用程序的路由和速率限制器。下面是对这段代码的详细解释:方法bootpublicfunctionboot():void{//RateLimiter配置RateLimiter::for('api',function(Request$request){return......
  • Laravel的 Eloquent ORM 中Scopes
    在Laravel的EloquentORM中,Scopes(作用域)是一种用于封装数据库查询逻辑的便捷方式。Scopes可以帮助你在模型中定义常用的查询逻辑,并使其在需要时更易于重用和调用。Scopes有两种类型:全局作用域(GlobalScopes)和局部作用域(LocalScopes)。局部作用域(LocalScopes)局部作用域是......
  • Laravel实战笔记
    Laravel中默认时间格式为:"updated_at":"2024-05-14T03:16:43.000000Z"Date要修改Laravel模型中updated_at字段的输出格式,可以通过以下两种方式实现:使用toDateString()方法:$user=User::find(1);$updatedAt=$user->updated_at->toDateString();//输出:"2024......
  • Laravel Model中的$appends
    protected$appends是Laravel模型中的一个属性,用于指定哪些虚拟属性(Accessor)应该被包含在模型的数组或JSON表示中。虚拟属性是在模型中定义的,通过使用Accessors和Mutators来访问和修改模型属性的值。这些虚拟属性不会存储在数据库中,但可以通过模型实例进行访问和操作......
  • axios无法加载响应数据:no data found for resource with given identifier
    做一个demo,springboot写好了接口,postman请求也没问题,如下:但是axios请求时,却发生了问题:查了一圈,没发现啥问题,又想起来看下控制台信息跨域的问题?网上也有这么说的,抱着试试的态度在controller上增加了跨域的注解@CrossOrigin重新运行,页面刷新,ok~......
  • laravel,webman,hyperf,thinkphp推荐哪一个?
    2024年5月11日14:11:45laravelwebmanhyperfthinkphp流行程度国内流行,欧洲特别是法国,美国,日本很多使用主要在国内流行,少量国外使用主要国内流行,少量国外使用国内流行,国外俄罗斯有使用性能fpm多进程模式,性能一般,偏差同步阻塞多进程模式,性能很好web第一梯队协......
  • Useful resources
    AboutwritingMathematicalReasoningWritingandProof,formore,clickhere.Sciencewritingfornon-nativeEnglishspeakersMathematicalTypesettingResourcesMathematicalTypesettingResourcesonlinemarkdowneditorLecturenotesAlgebraHatcher......
  • SpringBoot读取Resources下的文件
    packagecom.qzsl.dp.utils;importorg.springframework.beans.factory.annotation.Qualifier;importorg.springframework.core.io.Resource;importorg.springframework.core.io.ResourceLoader;importorg.springframework.stereotype.Component;importorg.springfr......
  • WPF dynamic resources drawbacks
     Dynamic resource, on the other hand, will create a temporary expression during the initial compilation and thus defer lookup for resources until the requested resource value is actually required in order to construct an obj......
  • Laravel 实现自定义资源路由
    Laravel如何实现自定义资源路由最近在开发过程中,发现总有一些路由需要重复定义,比如切换状态,导出,回收站啊之类的。如果使用Laravel自带的资源路由方法,还不足以满足重复劳动得过程。所以是否有方法可以自定义项目得资源路由呢?在Laravel中,资源路由一般有两种服务端渲染Route:......