laravel接管Dingo-api和默认的错误处理方式

接管Dingo-api的错误

如上图所示,AppServiceProvider.php中的register()方法中添加如下代码

\API::error(function (\Illuminate\Validation\ValidationException $exception){
  $data =$exception->validator->getMessageBag();
   $msg = collect($data)->first();
   if(is_array($msg)){
     $msg = $msg[0];
   }
   return response()->json(['message'=>$msg,'status_code'=>400], 200);
 });
 \API::error(function (\Dingo\Api\Exception\ValidationHttpException $exception){
   $errors = $exception->getErrors();
   return response()->json(['message'=>$errors->first(),'status_code'=>400], 200);
 });

接管laravel的错误

在Exceptions的Handler.php的render中写入以下代码

public function render($request, Exception $exception)
  {
    if($exception instanceof \Illuminate\Validation\ValidationException){
      $data = $exception->validator->getMessageBag();
      $msg = collect($data)->first();
      if(is_array($msg)){
        $msg = $msg[0];
      }
      return response()->json(['message'=>$msg],200);
    }

    if (in_array('api',$exception->guards())){
      if($exception instanceof AuthenticationException){
        return response()->json(['message'=>'token错误'],200);
      }
      if($exception instanceof ModelNotFoundException){
        return response()->json(['message'=>'该模型未找到'],200);
      }

    }

    return parent::render($request, $exception);
  }

以上这篇laravel接管Dingo-api和默认的错误处理方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Laravel实现ApiToken认证请求

    1.打开 database/migrations/2014_10_12_000000_create_users_table.php 这个 migration 文件, 我们需要更改 user 表的结构 2.我们需要为 user 表添加 api_token 字段, 也就是说我们的 token 是保存在数据库中的, 在合适的位置, 添加一行 $table->string('api_token', 60)->unique(); 3.配置好数据库, 通过 php artisan migrate 命令生成

  • 详解laravel安装使用Passport(Api认证)

    Laravel通过传统的登录表单已经让用户认证变得很简单,但是API怎么办?API通常使用token进行认证并且在请求之间不维护session状态.Laravel使用Laravel Passport让API认证变得轻而易举,Passport基于Alex Bilbie维护的League OAuth2 server,可以在数分钟内为Laravel应用提供完整的OAuth2服务器实现. 中文文档 http://laravelacademy.org/post/6813.html 安装 composer

  • laravel框架 api自定义全局异常处理方法

    api返回实现 $result = User::find($id); if(empty($result)){ throw new ApiException('获取失败'); } else{ return json_decode($result); } api返回信息 { "msg": "", "data": "获取失败", "status": 0 } 1,添加异常类 namespace App\Except

  • 基于laravel制作APP接口(API)

    前期准备 前言,为什么做以及要做个啥 本人姓小名白,不折不扣编程届小白一名,但是自从大一那会儿接触到编程这件奇妙的事情,就完完全全的陷入的程序的世界. 这不,最近又开始折腾APP了,话说现在开发一款APP真是容易,只用JavaScript和一点点HTML+css技术就可以完成.但是做APP的后台就不一样了.开发了APP,想让读点数据进去,那我们就要去开发个后台了. laravel框架,是我最喜欢的PHP框架了,没有之一.去年就曾经用laravel写了我的个人网站但粗糙程度让我十分脸红,好了不扯了

  • laravel接管Dingo-api和默认的错误处理方式

    接管Dingo-api的错误 如上图所示,AppServiceProvider.php中的register()方法中添加如下代码 \API::error(function (\Illuminate\Validation\ValidationException $exception){ $data =$exception->validator->getMessageBag(); $msg = collect($data)->first(); if(is_array($msg)){ $msg

  • laravel dingo API返回自定义错误信息的实例

    laravel 在使用了 dingo API 后,错误信息被dingo异常类接管了,返回信息变成了 : 要返回自定义的错误信息,就需要再把错误异常类接管回来(大概这个意思...) 方法: 在 app\Providers\AppServiceProvider.php 中的 boot() 方法 添加如下代码: app('api.exception')->register(function (\Exception $exception) { $request = Request::capture();

  • Laravel+Dingo/Api 自定义响应的实现

    在最近的开发开发项目中,我使用了Dingo/Api这个第三方Api库. Dingo是个很强大的Api库, 但在开发的过程中,需要自定义响应字段. 刚开始使用Ding/Api时,返回如下: { "message": "422 Unprocessable Entity", "errors": { "mobile": [ "手机号格式不正确" ] }, "status_code": 422 }

  • IIS默认的错误页不友好解决方法

    IIS默认的错误页是很不友好的,很多人看到默认的错误页时都会说:网站打不开了!白白损失了这部分流量.而如果错误页直接跳转到首页又对搜索引擎很不友好,搞不好首页还会被封掉.所以根据情况,有两个方法解决这个问题: 1.如果是博客等内容型的网站,可以返回一个带有404错误的搜索框让访客搜索,若是电子商务型网站,则可以返回一个带有404错误的进度条进行跳转.这两种方法即照顾了访客又顾及到了SEO. 2.可以在Google webmaster tools中查看自己网站错误页有多少. 修改默认错误页的方法很

  • laravel 配置路由 api和web定义的路由的区别详解

    1.路由经过中间件方面不同 打开kerenl.php就可以看到区别 protected $middlewareGroups = [ 'web' => [ \App\Http\Middleware\EncryptCookies::class, \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class, \Illuminate\Session\Middleware\StartSession::class, // \Illumina

  • laravel 5.5 关闭token的3种实现方式

    方法一: 关闭掉选中的那一行 整个项目可全部关闭token 方法二: 在middleware的verifyCsrfTkoen.php中添加函数方法 handle 可以在项目整个禁用token; 方法三: 定义在 protected $except = [ '屏蔽掉不用提交token的路由'], 这个可以在项目屏蔽掉部分路由不用使用token,使用起来更灵活 以上这篇laravel 5.5 关闭token的3种实现方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Laravel基础-关于引入公共文件的两种方式

    (1).首先在app\Http\routes.php中定义路由: Route::get('view','ViewController@view'); Route::get('article','ViewController@article'); Route::get('layout','ViewController@layout'); (2).然后在Http\Controllers\ViewController.php中写入方法: public function view(){ return v

  • JavaScript中async await更优雅的错误处理方式

    目录 背景 为什么要错误处理 async await 更优雅的错误处理 小结 总结 背景 团队来了新的小伙伴,发现我们的团队代码规范中,要给 async  await 添加 try...catch.他感觉很疑惑,假如有很多个(不集中),那不是要加很多个地方?那不是很不优雅? 为什么要错误处理 JavaScript 是一个单线程的语言,假如不加 try ...catch ,会导致直接报错无法继续执行.当然不意味着你代码中一定要用 try...catch 包住,使用 try...catch 意味着你

  • Golang错误处理方式异常与error

    目录 一.异常 二.错误 Go 提供了两种处理错误 方式, 一 种是借助 panic和 recover 的抛出捕获机制, 另一种使用error 错误类型 一.异常 1.go没有try/catch,而是使用panic/recover. panic包出异常,后续代码不再执行 recover再defer中捕获异常,使groutine(即程序)能够正常退出. 1)只有panic,而没有recover,程序宕机无法正常退出 package main import "fmt" func send(

  • VC++实现通过API来查看程序错误信息的方法

    本文实例介绍了VC++通过API查看错误信息的方法,可以在遇到错误的时候,将显示出错信息并退出处理,具体的实现代码如下: if((m_hBitMap=(HBITMAP)::LoadImage(NULL,filepath,IMAGE_BITMAP,0,0,LR_DEFAULTSIZE|LR_LOADFROMFILE))==NULL) { LPVOID lpMsgBuf; DWORD dw = ::GetLastError(); FormatMessage( FORMAT_MESSAGE_ALLOC

随机推荐