婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > yii2 開發api接口時優雅的處理全局異常的方法

yii2 開發api接口時優雅的處理全局異常的方法

熱門標簽:咸寧銷售電銷機器人系統 電銷機器人問門薩維品牌my 余姚電話機器人 百度地圖標注偏差 開發地圖標注類網站 外呼系統能給企業帶來哪些好處 百度地圖怎樣標注圖標 400電話蘭州申請請 廣東廣州在怎么申請400電話

前言:個人覺得,學習或溫習一套Web框架,在快速閱讀一遍文檔后,應從路由,控制器,請求/響應對象,數據模型(Logic,Dao,Entity),全局異常處理幾個方面下手,這幾項了解后,框架上手就游刃有余了。然后我比較喜歡在開工前整理好框架的全局異常處理,方便寫 api時錯誤的統一響應。

api接口的開發過程中,我們需要對用戶數據進行嚴格的校驗,防止非法輸入對服務產生安全問題,在開發過程中,我比較喜歡即時的以拋出異常的方式中斷請求的處理,并以全局異常處理器格式化處理后統一返回給客戶端。

今天就把 yii2 自帶的全局異常處理器改寫至對 api 友好(yii2yii\web\HttpException默認對 web 請求友好,都是以text/html的方式返回錯誤描述,對api不友好,api當然是json)。

注冊異常處理器

yii2也是以 controller/action 的方式定義一個異常處理器的,我們可以在 components=>errorHandler中自定義。

# config/web.php
'components' => [
  'errorHandler' => [
    'errorAction' => 'exception/handler'
  ]
]

異常處理器

定義相應的異常處理器,app\actions\ErrorApiAction 繼承 yii\web\ErrorAction,可以拿到yii2為我們整理好的全局異常。

# controllers/ExceptionController.php
?php

namespace app\controllers;

use yii\web\Controller;

class ExceptionController extends Controller
{
  /**
   * 為 actionHandler 掛載獨立的 action
   * @return array
   */
  public function actions()
  {
    return [
      'handler' => [
        'class' => 'app\actions\ErrorApiAction',
      ]
    ];
  }
}

api友好的錯誤異常處理器,這里我也只是簡單的把響應格式改了一下,異常的上下文還是用yii2自帶的處理的。

#actions/ErrorApiAction.php
?php
/**
 * @author wangzhijian@styd.com
 * @date 2019-5-13 17:20:10
 * Api 全局錯誤異常處理器
 */

namespace app\actions;

use Yii;
use yii\web\ErrorAction;
use yii\web\Response;

class ErrorApiAction extends ErrorAction
{
  public function run()
  {
    // 根據異常類型設定相應的響應碼
    Yii::$app->getResponse()->setStatusCodeByException($this->exception);
    // json 格式返回
    Yii::$app->getResponse()->format = Response::FORMAT_JSON;
    // 返回的內容數據
    return [
      'msg' => $this->exception->getMessage(),
      'err' => $this->exception->getCode()
    ];
  }
}

異常實體

主要是簡單的把狀態碼的傳遞封裝一下,用更容易理解的類名來代理傳遞。
exceptions/HttpException.php

?php
/**
 * app 異常基礎類
 */

namespace app\exceptions;

class HttpException extends \yii\web\HttpException
{
  public function __construct($message = null, $code = 0, \Exception $previous = null)
  {
    parent::__construct($this->statusCode, $message, $code, $previous);
  }
}

exceptions/HttpForbiddenException.php

?php
/**
 * 400 bad request
 */

namespace app\exceptions;

class HttpBadRequestException extends HttpException
{
  public $statusCode = 400;
}

exceptions/HttpUnauthorizedException.php

?php
/**
 * 401 unauthorized
 */

namespace app\exceptions;

class HttpUnauthorizedException extends HttpException
{
  public $statusCode = 401;
}

exceptions/HttpForbiddenException.php

?php
/**
 * 403 forbidden
 */

namespace app\exceptions;

class HttpForbiddenException extends HttpException
{
  public $statusCode = 403;
}

exceptions/HttpNotFoundException.php

?php
/**
 * 404 not found
 */

namespace app\exceptions;

class HttpNotFoundException extends HttpException
{
  public $statusCode = 404;
}

使用范例

在一些 service logic model 中根據需要即時拋出異常即可,上層控制器拿到的永遠都是正常的返回數據,絕對的2xx響應簇

throw new HttpBadRequestException("具體的非法描述", 4001);
throw new HttpUnauthorizedException("請認證后訪問");
throw new HttpForbiddenException("無權訪問");
throw new HttpNotFoundException("請求資源不存在");

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:
  • 實例講解如何在PHP的Yii框架中進行錯誤和異常處理
  • YII Framework教程之異常處理詳解

標簽:臨沂 麗江 鷹潭 衡陽 巴彥淖爾 十堰 重慶 銅陵

巨人網絡通訊聲明:本文標題《yii2 開發api接口時優雅的處理全局異常的方法》,本文關鍵詞  yii2,開發,api,接口,時,優雅,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《yii2 開發api接口時優雅的處理全局異常的方法》相關的同類信息!
  • 本頁收集關于yii2 開發api接口時優雅的處理全局異常的方法的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    久久综合久久综合久久| 亚洲韩国精品一区| 国产精品视频九色porn| 国产精品妹子av| 亚洲国产婷婷综合在线精品| 国产在线一区二区| 一区二区欧美视频| 亚洲免费av高清| 成人av电影免费在线播放| 精品国产一区a| 人人爽香蕉精品| 在线播放国产精品二区一二区四区| 国产精品理伦片| 成人高清免费在线播放| 精品久久久久久久一区二区蜜臀| 美女视频第一区二区三区免费观看网站 | 国产精品入口麻豆原神| 国产 日韩 欧美大片| 亚洲欧洲国产日韩| 欧美午夜电影在线播放| 喷水一区二区三区| 国产精品国模大尺度视频| 国产不卡高清在线观看视频| 中文字幕高清一区| 欧美在线视频你懂得| 亚洲成av人片在线观看无码| 欧美精品日韩一本| bt7086福利一区国产| 亚洲一区二区3| 日韩一级片网站| 成人动漫视频在线| 亚洲午夜激情网站| 欧美电影精品一区二区| 91在线视频网址| 亚洲成av人片在线观看| 国产精品久久久久一区 | 91麻豆精品国产91久久久使用方法 | 国产精品全国免费观看高清| 色综合久久88色综合天天| 久久69国产一区二区蜜臀 | 久久久久国产精品免费免费搜索 | 91在线观看免费视频| 日日夜夜精品视频免费| 最近日韩中文字幕| 日韩精品一区二区三区swag| 一本一道波多野结衣一区二区| 国内精品第一页| 五月婷婷色综合| 国产精品久久久久一区二区三区 | 无码av中文一区二区三区桃花岛| 久久亚洲精品小早川怜子| zzijzzij亚洲日本少妇熟睡| 精品亚洲成a人| 日本视频一区二区三区| 中文字幕在线观看不卡视频| 久久综合丝袜日本网| 欧美成人a视频| 欧美成va人片在线观看| 一区二区三区四区在线| 精品欧美乱码久久久久久| www.欧美色图| 色综合 综合色| 国产成人丝袜美腿| 国产精品综合网| 日韩国产精品久久久| 国产区在线观看成人精品| www久久久久| 欧美视频日韩视频| 国产成人免费9x9x人网站视频| 日韩成人av影视| 亚洲成人精品一区| 香蕉久久夜色精品国产使用方法| 中文字幕色av一区二区三区| 欧美电影免费提供在线观看| 日本vs亚洲vs韩国一区三区二区| 欧美日韩www| 国产欧美一区二区精品性色| 夜夜精品视频一区二区| 色一情一乱一乱一91av| 激情久久五月天| 麻豆精品国产传媒mv男同 | 国产成人精品亚洲午夜麻豆| 亚洲成人免费在线观看| 视频精品一区二区| 激情五月婷婷综合| 成人高清av在线| 在线观看国产91| 91精品国产综合久久精品图片| 555www色欧美视频| 日韩欧美自拍偷拍| 国产亚洲美州欧州综合国 | 欧美精品一区二区三区四区 | 国产高清精品网站| 99麻豆久久久国产精品免费| 欧美亚洲一区二区在线观看| 欧美一区二区在线播放| 中文在线免费一区三区高中清不卡| 中文字幕佐山爱一区二区免费| 亚洲va欧美va人人爽午夜| 日韩在线卡一卡二| 极品美女销魂一区二区三区 | 91丨九色丨尤物| 777xxx欧美| 国产欧美一区二区三区在线看蜜臀| 亚洲精品免费播放| 国产激情91久久精品导航| 欧美性一二三区| 亚洲国产高清在线| 日本aⅴ亚洲精品中文乱码| 高清不卡在线观看av| 欧美在线不卡视频| 中文字幕精品一区| 久久精品国产亚洲aⅴ| 色婷婷av一区二区| 国产目拍亚洲精品99久久精品| 亚洲高清一区二区三区| 波多野结衣一区二区三区 | 6080国产精品一区二区| 亚洲色图清纯唯美| 成人性视频网站| 制服丝袜中文字幕一区| 国产精品久久久久一区二区三区| 久久99国产精品免费| 日韩一区二区免费在线观看| 国产精品国产精品国产专区不片| 精品一区二区免费在线观看| 欧美亚洲另类激情小说| 一区二区在线观看免费| 国产另类ts人妖一区二区| 欧美日本在线播放| 一色桃子久久精品亚洲| 国产精品一线二线三线| 国产网红主播福利一区二区| 美女视频黄免费的久久| 欧美一区二区二区| 免费三级欧美电影| 成人动漫在线一区| 国产精品免费视频观看| 国产成人8x视频一区二区 | 亚洲午夜av在线| 99re这里只有精品视频首页| 欧美一级二级三级乱码| 天堂蜜桃一区二区三区| 91精品国产色综合久久不卡电影 | 麻豆精品一区二区三区| 欧美日韩国产精品自在自线| 亚洲精品成人a在线观看| 91日韩一区二区三区| 一区二区三区四区乱视频| www.在线欧美| 一区二区三区影院| 精品视频一区二区不卡| 三级影片在线观看欧美日韩一区二区| 欧美午夜一区二区三区| 天天综合天天做天天综合| 91.xcao| 毛片av中文字幕一区二区| 精品国产91乱码一区二区三区| 国产精品一二二区| 一区二区三区在线免费观看| 在线日韩一区二区| 日本91福利区| 国产精品久久久久久久久图文区 | 91免费国产在线| 夜夜爽夜夜爽精品视频| 欧美日本精品一区二区三区| 韩国三级电影一区二区| 国产精品久久久久aaaa| 欧美日本一道本在线视频| 韩日欧美一区二区三区| 国产日韩欧美一区二区三区乱码 | 欧美日韩在线直播| 免费观看在线综合| 中文字幕不卡在线观看| 在线精品视频一区二区| 久久91精品国产91久久小草| 亚洲欧洲精品天堂一级| 制服丝袜av成人在线看| 国产毛片精品视频| 亚洲亚洲精品在线观看| 国产日韩欧美不卡在线| 欧美日韩亚洲综合一区二区三区| 久久精品999| 亚洲综合免费观看高清完整版 | jlzzjlzz亚洲日本少妇| 日本成人在线网站| 国产精品久久久久久久久久免费看| 在线免费观看日本欧美| 国内精品在线播放| 欧美午夜一区二区三区| 韩国av一区二区三区| 亚洲一区二区综合| 久久久国产精品午夜一区ai换脸| 欧美亚一区二区| av成人老司机| 国内外精品视频| 性做久久久久久免费观看 | 国产欧美精品区一区二区三区| 欧美三级一区二区| www.日韩精品|