当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-10-31 20:10:08 浏览: 评论:0 

这篇文章主要介绍了PHP使Laravel为JSON REST API返回自定义错误的问题,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下。

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

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

  1. Array 
  2. ( 
  3.   [code] => 401 
  4.   [message] => "Invalid User" 
  5. ) 

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

去你的app / start / global.php.

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

  1. App::error(function(Exception $exception, $code) 
  2. { 
  3.   Log::error($exception); 
  4.   $message = $exception->getMessage(); 
  5.   // switch statements provided in case you need to add 
  6.   // additional logic for specific error code. 
  7.   switch ($code) { 
  8.     case 401: 
  9.       return Response::json(array( 
  10.           'code'   => 401, 
  11.           'message'  => $message 
  12.         ), 401); 
  13.     case 404: 
  14.       $message      = (!$message ? $message = 'the requested resource was not found' : $message); 
  15.       return Response::json(array( 
  16.           'code'   => 404, 
  17.           'message'  => $message 
  18.         ), 404);     
  19.   } 
  20. }); 

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

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

有点像:

  1. public static function error($code = 400, $message = null) 
  2. { 
  3.   // check if $message is object and transforms it into an array 
  4.   if (is_object($message)) { $message = $message->toArray(); } 
  5.   switch ($code) { 
  6.     default: 
  7.       $code_message = 'error_occured'; 
  8.       break; 
  9.   } 
  10.   $data = array( 
  11.       'code'   => $code, 
  12.       'message'  => $code_message, 
  13.       'data'   => $message 
  14.     ); 
  15.   // return an error 
  16.   return Response::json($data, $code); 
  17. }

Tags: Laravel JSON REST API

分享到: