Laravel+Dingo/Api 自定義響應(yīng)的實(shí)現(xiàn)
在最近的開發(fā)開發(fā)項(xiàng)目中,我使用了Dingo/Api這個第三方Api庫。
Dingo是個很強(qiáng)大的Api庫, 但在開發(fā)的過程中,需要自定義響應(yīng)字段。
剛開始使用Ding/Api時,返回如下:
{
"message": "422 Unprocessable Entity",
"errors": {
"mobile": [
"手機(jī)號格式不正確"
]
},
"status_code": 422
}
這是輸入字段驗(yàn)證錯誤時,Dingo返回的結(jié)果。
這樣看上去沒什么問題。因?yàn)檫@邊 status_code 是比較規(guī)范的。對于 PHP 來說,直接 json_decode 之后,并沒有什么難辦的地方。但是對面安卓和 IOS 則是使用的強(qiáng)類型語言。尤其是 Java,需要對每一個 Json 對象進(jìn)行新建,然后序列化。所以,這種格式不統(tǒng)一的返回結(jié)果,是無法接受的
解決方法: 我們需要將所有的異常信息歸總到一個地方,在AppServiceProvider的boot()方法中添加
// 將所有的 Exception 全部交給 App\Exceptions\Handler 來處理
app('api.exception')->register(function (Exception $exception) {
$request = Illuminate\Http\Request::capture();
return app('App\Exceptions\Handler')->render($request, $exception);
});
然后在App\Exceptions\Handler.php中的render()方法中:
$class = get_class($exception);
switch ($class) {
case 'Dingo\Api\Exception\ValidationHttpException':
if ($request->expectsJson())
return $this->errorRespond($exception->getErrors()->first(), $exception->getStatusCode());
break;
default:
if ($request->expectsJson())
return $this->errorRespond('系統(tǒng)休息了', 500000);
break;
}
再次訪問接口:
{
"response_status_code": 422,
"response_message": "請?zhí)顚懯謾C(jī)號",
"data": []
}
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- laravel框架中表單請求類型和CSRF防護(hù)實(shí)例分析
- Laravel 解決419錯誤 -ajax請求錯誤的問題(CSRF驗(yàn)證)
- 對laravel的csrf 防御機(jī)制詳解,及form中csrf_token()的存在介紹
- laravel 實(shí)現(xiàn)關(guān)閉CSRF(全部關(guān)閉、部分關(guān)閉)
- laravel csrf排除路由,禁止,關(guān)閉指定路由的例子
- Laravel框架中VerifyCsrfToken報(bào)錯問題的解決
- 在 Laravel 中動態(tài)隱藏 API 字段的方法
- laravel框架 api自定義全局異常處理方法
- 讓Laravel API永遠(yuǎn)返回JSON格式響應(yīng)的方法示例
- 基于laravel制作APP接口(API)
- Laravel5.3+框架定義API路徑取消CSRF保護(hù)方法詳解
相關(guān)文章
使用python實(shí)現(xiàn)多維數(shù)據(jù)降維操作
今天小編就為大家分享一篇使用python實(shí)現(xiàn)多維數(shù)據(jù)降維操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-02-02
Python中常用的GUI(圖形用戶界面)庫用法詳細(xì)介紹
GUI圖形用戶界面是一種允許用戶通過圖形元素(如圖標(biāo)、按鈕、窗口等)與電子設(shè)備進(jìn)行交互的用戶界面,下面這篇文章主要給大家介紹了關(guān)于Python中常用的GUI(圖形用戶界面)庫用法的相關(guān)資料,需要的朋友可以參考下2024-08-08
pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例
今天小編就為大家分享一篇pytorch 圖像預(yù)處理之減去均值,除以方差的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01
Python jieba 中文分詞與詞頻統(tǒng)計(jì)的操作
這篇文章主要介紹了Python jieba 中文分詞與詞頻統(tǒng)計(jì)的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-03-03
利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法
這篇文章主要介紹了利用Python模擬登錄pastebin.com的實(shí)現(xiàn)方法,本文圖文并茂給大家介紹的非常詳細(xì),具有一定的參考借鑒價值 ,需要的朋友可以參考下2019-07-07
Python線性點(diǎn)運(yùn)算數(shù)字圖像處理示例詳解
這篇文章主要為大家介紹了數(shù)字圖像處理基本運(yùn)算如何用Python詳細(xì)點(diǎn)運(yùn)算來處理數(shù)字圖像有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-09-09
解決Windows下PowerShell無法進(jìn)入Python虛擬環(huán)境問題
這篇文章主要介紹了解決Windows下PowerShell無法進(jìn)入Python虛擬環(huán)境問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-02-02

