专栏首页恩蓝脚本PHP使Laravel为JSON REST API返回自定义错误的问题

PHP使Laravel为JSON REST API返回自定义错误的问题

我正在开发某种RESTful API.发生一些错误时,我会抛出一个App :: abort(code,message)错误.

问题是:我希望他用键“代码”和“消息”抛出一个json形成的数组,每个数组都包含上述数据.

Array
(
  [code] =  401
  [message] =  "Invalid User"
)

有没有人知道是否可能,如果是,我该怎么做?

去你的app / start / global.php.

这将将401和404的所有错误转换为自定义json错误,而不是Whoops stacktrace.加这个:

App::error(function(Exception $exception, $code)
{
  Log::error($exception);
  $message = $exception- getMessage();
  // switch statements provided in case you need to add
  // additional logic for specific error code.
  switch ($code) {
    case 401:
      return Response::json(array(
          'code'   =  401,
          'message'  =  $message
        ), 401);
    case 404:
      $message      = (!$message ? $message = 'the requested resource was not found' : $message);
      return Response::json(array(
          'code'   =  404,
          'message'  =  $message
        ), 404);    
  }
});

这是处理此错误的众多选项之一.

制作API最好创建自己的帮助器,如Responser :: error(400,’damn’),扩展了Response类.

有点像:

public static function error($code = 400, $message = null)
{
  // check if $message is object and transforms it into an array
  if (is_object($message)) { $message = $message- toArray(); }
  switch ($code) {
    default:
      $code_message = 'error_occured';
      break;
  }
  $data = array(
      'code'   =  $code,
      'message'  =  $code_message,
      'data'   =  $message
    );
  // return an error
  return Response::json($data, $code);
}

总结

以上所述是小编给大家介绍的PHP使Laravel为JSON REST API返回自定义错误的解决方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对ZaLou.Cn网站的支持!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Flutter Dio二次封装的实现

    第一步是创建Dio的单例辅助类,并初始化Dio和对Dio进行一些全局的参数设置:

    砸漏
  • Linux 为特定的用户或用户组启用或禁用 SSH的方法

    由于你的公司标准规定,你可能只能允许部分人访问 Linux 系统。或者你可能只能够允许几个用户组中的用户访问 Linux 系统。那么如何实现这样的要求呢?最好的...

    砸漏
  • linux下使用 CentOS7安装jdk1.7

    有些linux系统会自带OPENJDK,我们最好先将原有自带的jdk删除掉再安装。

    砸漏
  • 【容易】零基础转行it,哪个方向容易一些?

    之前有一个同学发邮件问我, 本人30了,高中理科,大学文科,一直做销售,感觉不稳定,现在想转行做it。 请问IOS,大数据互联网(Java软件开发)和网络营销(...

    web前端教室
  • Oracle用户操作、数据类型、表格修改、约束设置详解

    b) 表级别简化版定义主键约束, 省略约束名 create table student (

    时间静止不是简史
  • NLP入门必知必会(一):Word Vectors

    自然语言处理( NLP )是信息时代最重要的技术之一,也是人工智能的重要组成部分。NLP的应用无处不在,因为人们几乎用语言交流一切:网络搜索、广告、电子邮件、客...

    Datawhale
  • Cython入门到放弃(二)

    上一篇文章讲了Cython的使用流程,没有具体展开讲别的,例子也很简单。今天首先使用一个官方文档上使用Cython的例子,然后抛出几个连续的小demo,看看Cy...

    钱塘小甲子
  • Groovy中的闭包

    今天分享一下Groovy的闭包。基本上,我们可以将闭包视为代码,语句块,它们可以访问周围范围的所有变量或方法,并且可以将这些代码块分配给变量,并将它们传递到其他...

    FunTester
  • Java函数式编程之Stream流编程

    如何区分中间操作和终止操作呢?可以根据操作的返回值类型判断,如果返回值是Stream,则该操作为中间操作。如果返回值不是Stream或者为空,则该操作是终止操作...

    端碗吹水
  • 二叉树:层序遍历登场!

    给你一个二叉树,请你返回其按 层序遍历 得到的节点值。(即逐层地,从左到右访问所有节点)。

    代码随想录

扫码关注云+社区

领取腾讯云代金券