• 企业400电话
  • 网络优化推广
  • AI电话机器人
  • 呼叫中心
  • 全 部 栏 目

    网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Laravel 5.5中为响应请求提供的可响应接口详解
    POST TIME:2021-10-18 05:16

    前言

    Laravel 5.5 也将会是接下来的一个 LTS(长期支持)版本。 这就意味着它拥有两年修复以及三年的安全更新支持。Laravel 5.1 也是如此,不过它两年的错误修复支持将在今年结束。

    Laravel 5.5 的路由中增加了一种新的返回类型:可相应接口( Responsable )。该接口允许对象在从控制器或者闭包路由中返回时自动被转化为标准的 HTTP 响应接口。任何实现 Responsable 接口的对象必须实现一个名为 toResponse() 的方法,该方法将对象转化为 HTTP 响应对象。

    看示例:

    use Illuminate\Contracts\Support\Responsable;
    
    class ExampleObject implements Responsable
    {
     public function __construct($name = null)
     {
      $this->name = $name ?? 'Teapot'; 
     }
    
     public function status()
     {
      switch(strtolower($this->name)) {
       case 'teapot':
        return 418;
       default:
        return 200;
      }
     }
    
     public function toResponse()
     {
      return response(
       "Hello {$this->name}",
       $this->status(),
       ['X-Person' => $this->name]
      );
     }
    }

    在路由中使用这个 ExampleObject 的时候,你可以这样做:

    Route::get('/hello', function() {
     return new ExampleObject(request('name'));
    });

    在 Laravel 框架中, Route 类如今可以在准备响应内容时检查这种(实现了 Responsable 接口的)类型:

    if ($response instanceof Responsable) {
     $response = $response->toResponse();
    }

    假如你在 App\Http\Responses 命名空间下用多个响应类型来组织你的响应内容,可以参考下面这个示例。该示例演示了如何支持 Posts (多个实例组成的 Collection):

    posts = $posts;
     }
    
     public function toResponse()
     {
      return response()->json($this->transformPosts());
     }
    
     protected function transformPosts()
     {
      return $this->posts->map(function ($post) {
       return [
        'title' => $post->title,
        'description' => $post->description,
        'body' => $post->body,
        'published_date' => $post->published_at->toIso8601String(),
        'created' => $post->created_at->toIso8601String(),
       ];
      });
     }
    }

    以上只是一个模拟简单应用场景的基础示例:返回一个 JSON 响应,但你希望响应层不是简单地用内置实现把对象 JSON 化,而是要做一些内容处理。以上示例同时假设 App\Http\Responses\Response 这个类能提供一些基础的功能。当然响应层也可以包含一些转换代码(类似 Fractal ),而不是直接在控制器里做这样的转换。

    与上面示例中的 PostIndexResponse 类协作的控制器代码类似以下这样:

    如果你想了解更多有关这个接口的细节,可以查看项目中 相关代码的 commit .

    总结

    以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。

    您可能感兴趣的文章:
    • 让Laravel API永远返回JSON格式响应的方法示例
    • Laravel+Dingo/Api 自定义响应的实现
    • laravel http 自定义公共验证和响应的方法
    • Laravel5.1 框架Request请求操作常见用法实例分析
    • 跟我学Laravel之请求与输入
    • 跟我学Laravel之请求(Request)的生命周期
    • 解决laravel 出现ajax请求419(unknown status)的问题
    • Laravel获取当前请求的控制器和方法以及中间件的例子
    • laravel请求参数校验方法
    • Laravel框架处理用户的请求操作详解
    • Laravel5.1 框架响应基本用法实例分析
    上一篇:laravel5 使用try catch的实例详解
    下一篇:php操作zip在不解压缩包的情况下显示压缩包中的图片
  • 相关文章
  • 

    关于我们 | 付款方式 | 荣誉资质 | 业务提交 | 代理合作


    © 2016-2020 巨人网络通讯

    时间:9:00-21:00 (节假日不休)

    地址:江苏信息产业基地11号楼四层

    《增值电信业务经营许可证》 苏B2-20120278

    X

    截屏,微信识别二维码

    微信号:veteran88

    (点击微信号复制,添加好友)

     打开微信