摘要:在最近的開發開發項目中,我使用了這個第三方庫。是個很強大的庫,但在開發的過程中,需要自定義響應字段。剛開始使用時,返回如下手機號格式不正確這是輸入字段驗證錯誤時,返回的結果。尤其是,需要對每一個對象進行新建,然后序列化。
在最近的開發開發項目中,我使用了Dingo/Api這個第三方Api庫。
Dingo是個很強大的Api庫, 但在開發的過程中,需要自定義響應字段。
剛開始使用Ding/Api時,返回如下:
{ "message": "422 Unprocessable Entity", "errors": { "mobile": [ "手機號格式不正確" ] }, "status_code": 422 }
這是輸入字段驗證錯誤時,Dingo返回的結果。
這樣看上去沒什么問題。因為這邊 status_code 是比較規范的。對于 PHP 來說,直接 json_decode 之后,并沒有什么難辦的地方。但是對面安卓和 IOS 則是使用的強類型語言。尤其是 Java,需要對每一個 Json 對象進行新建,然后序列化。所以,這種格式不統一的返回結果,是無法接受的
解決方法: 我們需要將所有的異常信息歸總到一個地方,在AppServiceProvider的boot()方法中添加
// 將所有的 Exception 全部交給 AppExceptionsHandler 來處理 app("api.exception")->register(function (Exception $exception) { $request = IlluminateHttpRequest::capture(); return app("AppExceptionsHandler")->render($request, $exception); });
然后在AppExceptionsHandler.php中的render()方法中:
$class = get_class($exception); switch ($class) { case "DingoApiExceptionValidationHttpException": if ($request->expectsJson()) return $this->errorRespond($exception->getErrors()->first(), $exception->getStatusCode()); break; default: if ($request->expectsJson()) return $this->errorRespond("系統休息了", 500000); break; }
再次訪問接口:
{ "response_status_code": 422, "response_message": "請填寫手機號", "data": [] }
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/30097.html
摘要:源碼使用本文使用的數據庫與基礎篇相同,故不再重復說明。使用的用法與之前的自定義用法類似,甚至更加簡單。首先定義路由如果要查看路由,需要使用創建控制器需要使用這個。 源碼 使用 Dingo Api 本文使用的數據庫與基礎篇相同,故不再重復說明。 初始化 安裝 $ composer require dingo/api:1.0.x@dev 注冊 /config/app.php provide...
摘要:背景在近期使用處理接口時,發現本身中無法捕獲異常。后來查閱資料發現,接管了請求的異常處理。導致無法自定義錯誤返回,很是頭疼。最后在的找到了處理方法。 背景 在近期使用Dingo api處理接口時,發現laravel本身appExceptionsHandler中無法捕獲異常。 后來查閱資料發現,Dingo api接管了api請求的異常處理。導致無法自定義錯誤返回,很是頭疼。 最后在di...
摘要:雖然這個方案的目標是盡可能保持靈活性,但它仍然不能涵蓋所有情況并解決所有問題。這個是調度器的,并提供了一些好用的輔助方法。如果有什么問題或者文章有哪些錯誤,請在評論區回復,及時阻止我誤導他人。 showImg(https://segmentfault.com/img/bVbc1VY?w=1560&h=620); 基于 https://laravel-china.org/doc... 文...
摘要:前言由于在度娘找了半天根本一大堆版本,弄得我死去活來的,每個都試了一堆問題,到底你們做完有沒有總結過一次然后有幾個使用,完全不行啊,太監版不是我想要的。后來,終于找到例子并實測成功。 前言 由于在度娘找了半天根本一大堆Copy版本,弄得我死去活來的,每個都試了一堆問題,到底你們做完有沒有總結過一次?然后有幾個使用lunmen+dingo api+jwt,完全不行啊,太監版不是我想要的。...
摘要:我的博客中文文檔中使用輔助文章參考這篇文章基本就能搭建出環境,我使用的版本跟他一樣,不知道別的版本有啥大的區別,但是網上找的其他一些文章使用的是舊的版本,封裝的東西路徑可能不一樣,可能會保錯,有些文檔還說要手動添加和,其實新版本不需要。 我的github博客:https://zgxxx.github.io/ dingo api 中文文檔: https://www.bookstack....
閱讀 3196·2021-11-18 10:02
閱讀 1446·2021-10-12 10:08
閱讀 1239·2021-10-11 10:58
閱讀 1269·2021-10-11 10:57
閱讀 1167·2021-10-08 10:04
閱讀 2121·2021-09-29 09:35
閱讀 773·2021-09-22 15:44
閱讀 1269·2021-09-03 10:30