配置統(tǒng)一輸出格式
修改 app\Http\Controllers\Controller.php
控制器文件
添加以下內(nèi)容:
/**
* 獲取成功輸出
* @param array $data
* @param string $tip
* @param int $httpCode
* @return mixed
*/
public function success($data=array(),$tip='請(qǐng)求成功',$httpCode=200){
return response()->json(array(
'status' => 200,
'success'=>false,
'data'=>$data,
'tip'=>$tip
),$httpCode);
}
/**
* 錯(cuò)誤提示輸出
* @param $erroeCode
* @param string $tip
* @param int $httpCode
* @return mixed
*/
public function error($erroeCode,$tip='請(qǐng)求失敗',$httpCode=400){
return response()->json(array(
'status' => $httpCode,
'success'=>false,
'error'=>array(
'code'=>$erroeCode,
'message'=>trans("errorCode.{$erroeCode}")
),
'tip'=>$tip
),$httpCode);
}
使用
在控制器內(nèi)直接調(diào)用
//成功
return $this->success();
//錯(cuò)誤
return $this->error(40004);
返回格式說明
- 返回錯(cuò)誤信息
參數(shù)名 | 類型 | 說明 |
---|---|---|
status | int | http狀態(tài)碼 |
success | blood | 是否獲取成功 |
error | object | 錯(cuò)誤信息 |
-- code | int | 錯(cuò)誤碼 |
-- message | string | 錯(cuò)誤信息 |
tip | string | 提示信息 |
{
"status": 400,
"success": false,
"error": {
"code": 40004,
"message": "參數(shù)無效"
},
"tip": "請(qǐng)求失敗"
}
- 返回結(jié)果格式
參數(shù)名 | 類型 | 說明 |
---|---|---|
status | int | http狀態(tài)碼 |
success | blood | 是否獲取成功 |
data | object或array | 返回的結(jié)果數(shù)據(jù) |
-- xxx | ~ | ~ |
-- xxx | ~ | ~ |
-- xxx | ~ | ~ |
tip | string | 提示信息 |
{
"status": 200,
"success": true,
"data": {
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIU...",
"token_type": "bearer",
"expires_in": 3600
},
"tip": "請(qǐng)求成功"
}
添加狀態(tài)碼配置
- 添加http狀態(tài)碼提示信息文件到目錄
resources\lang\zh-CN\httpCode.php
httpCode.php 內(nèi)容如下:
<?php
return [
100=>'客戶端應(yīng)繼續(xù)其請(qǐng)求',
101=>'切換協(xié)議。服務(wù)器根據(jù)客戶端的請(qǐng)求切換協(xié)議。只能切換到更高級(jí)的協(xié)議,例如,切換到HTTP的新版本協(xié)議',
200=>'請(qǐng)求成功',
201=>'成功請(qǐng)求并創(chuàng)建了新的資源',
202=>'已經(jīng)接受請(qǐng)求,但未處理完成',
203=>'非授權(quán)信息',
204=>'服務(wù)器成功處理,但未返回內(nèi)容。',
205=>'服務(wù)器處理成功,用戶終端(例如:瀏覽器)應(yīng)重置文檔視圖。',
206=>'服務(wù)器成功處理了部分請(qǐng)求',
300=>'(多種選擇) 針對(duì)請(qǐng)求,服務(wù)器可執(zhí)行多種操作',
301=>'(永久移動(dòng)) 請(qǐng)求的資源已永久移動(dòng)到新位置',
302=>'臨時(shí)移動(dòng)) 服務(wù)器目前從不同位置的資源響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來進(jìn)行以后的請(qǐng)求。',
303=>'(查看其他位置) 請(qǐng)求者應(yīng)當(dāng)對(duì)不同的位置使用單獨(dú)的 GET 請(qǐng)求來檢索響應(yīng)時(shí),服務(wù)器返回此代碼',
304=>'(未修改) 自從上次請(qǐng)求后,請(qǐng)求的資源未修改過。 服務(wù)器返回此響應(yīng)時(shí),不會(huì)返回資源內(nèi)容。',
305=>'(使用代理) 請(qǐng)求者只能使用代理訪問請(qǐng)求的資源。 如果服務(wù)器返回此響應(yīng),還表示請(qǐng)求者應(yīng)使用代理。',
307=>'(臨時(shí)重定向) 服務(wù)器目前從不同位置的資源響應(yīng)請(qǐng)求,但請(qǐng)求者應(yīng)繼續(xù)使用原有位置來進(jìn)行以后的請(qǐng)求。',
400=>'(錯(cuò)誤請(qǐng)求) 服務(wù)器不理解請(qǐng)求的語法',
401 =>'(未授權(quán)) 請(qǐng)求要求身份驗(yàn)證。 對(duì)于需要登錄的資源,服務(wù)器可能返回此響應(yīng)。',
403=>'(禁止) 服務(wù)器拒絕請(qǐng)求',
404=>'(未找到) 服務(wù)器找不到請(qǐng)求的資源',
405=>'(方法禁用) 禁用請(qǐng)求中指定的方法',
406=>'(不接受) 無法使用請(qǐng)求的內(nèi)容特性響應(yīng)請(qǐng)求的資源',
407=>'(需要代理授權(quán)) 此狀態(tài)代碼與 401(未授權(quán))類似,但指定請(qǐng)求者應(yīng)當(dāng)授權(quán)使用代理',
408=>'(請(qǐng)求超時(shí)) 服務(wù)器等候請(qǐng)求時(shí)發(fā)生超時(shí)',
409=>'(沖突) 服務(wù)器在完成請(qǐng)求時(shí)發(fā)生沖突。 服務(wù)器必須在響應(yīng)中包含有關(guān)沖突的信息',
410=>'(已刪除) 如果請(qǐng)求的資源已永久刪除,服務(wù)器就會(huì)返回此響應(yīng)',
411=>'(需要有效長度) 服務(wù)器不接受不含有效內(nèi)容長度標(biāo)頭字段的請(qǐng)求',
412=>'(未滿足前提條件) 服務(wù)器未滿足請(qǐng)求者在請(qǐng)求中設(shè)置的其中一個(gè)前提條件',
413=>'(請(qǐng)求實(shí)體過大) 服務(wù)器無法處理請(qǐng)求,因?yàn)檎?qǐng)求實(shí)體過大,超出服務(wù)器的處理能力',
414=>'(請(qǐng)求的 URI 過長) 請(qǐng)求的 URI(通常為網(wǎng)址)過長,服務(wù)器無法處理(請(qǐng)求的 URI 過長) 請(qǐng)求的 URI(通常為網(wǎng)址)過長,服務(wù)器無法處理',
415=>'(不支持的媒體類型) 請(qǐng)求的格式不受請(qǐng)求頁面的支持',
416=>'(請(qǐng)求范圍不符合要求) 如果頁面無法提供請(qǐng)求的范圍,則服務(wù)器會(huì)返回此狀態(tài)代碼',
417=>'(未滿足期望值) 服務(wù)器未滿足"期望"請(qǐng)求標(biāo)頭字段的要求',
500=>'(服務(wù)器內(nèi)部錯(cuò)誤) 服務(wù)器遇到錯(cuò)誤,無法完成請(qǐng)求。',
501=>'(尚未實(shí)施) 服務(wù)器不具備完成請(qǐng)求的功能。 例如,服務(wù)器無法識(shí)別請(qǐng)求方法時(shí)可能會(huì)返回此代碼。',
502=>'(錯(cuò)誤網(wǎng)關(guān)) 服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無效響應(yīng)。(錯(cuò)誤網(wǎng)關(guān)) 服務(wù)器作為網(wǎng)關(guān)或代理,從上游服務(wù)器收到無效響應(yīng)。',
503=>'(服務(wù)不可用) 服務(wù)器目前無法使用(由于超載或停機(jī)維護(hù))。 通常,這只是暫時(shí)狀態(tài)。',
504=>'(網(wǎng)關(guān)超時(shí)) 服務(wù)器作為網(wǎng)關(guān)或代理,但是沒有及時(shí)從上游服務(wù)器收到請(qǐng)求。',
505=>'(HTTP 版本不受支持) 服務(wù)器不支持請(qǐng)求中所用的 HTTP 協(xié)議版本。',
];
- 添加錯(cuò)誤碼提示信息文件到目錄
resources\lang\zh-CN\errorCode.php
errorCode.php 內(nèi)容如下:
<?php
//根據(jù) “狀態(tài)碼&自定義的錯(cuò)誤編號(hào)” 的方式
return [
10001=>'未知錯(cuò)誤',
//客戶端錯(cuò)誤
40001=>'參數(shù)不能為空',
40002=>'參數(shù)不齊全',
40003=>'參數(shù)錯(cuò)誤',
...
//服務(wù)端錯(cuò)誤
50001=>'服務(wù)端錯(cuò)誤',
...
];
調(diào)用方式:trans 函數(shù)
//調(diào)用
trans("httpCode.404");
trans("errorCode.40001");
//json
return Responder::error(50001,trans('errorCode.50001'))->respond();
輸入圖片說明
框架報(bào)錯(cuò)返回 json 格式配置
修改文件 app\Exceptions\Handler.php
把 function render 修改 如下:
/**
* Render an exception into an HTTP response.
*
* @param \Illuminate\Http\Request $request
* @param \Exception $exception
* @return \Illuminate\Http\Response|\Illuminate\Http\JsonResponse
*/
public function render($request, Exception $e)
{
//框架自帶數(shù)據(jù)驗(yàn)證錯(cuò)誤信息返回處理
if($e instanceof \Illuminate\Validation\ValidationException){
$errors = $e->errors();
return $this->errorEcho($e->status,reset($errors)[0]);
}
if(method_exists($e,'getStatusCode')){
//json返回 http錯(cuò)誤提示信息
$http_code = $e->getStatusCode();
switch ($http_code){
case $http_code>=400:
return $this->errorEcho($e->getStatusCode(),$e->getMessage());
break;
default:
return parent::render($request, $e);
}
}
return parent::render($request, $e);
}
/**
* 自定義輸出格式
* @param $httpCode
* @param $msg
* @return \Illuminate\Http\Response
*/
private function errorEcho($httpCode,$msg=''){
if($msg == ''){
$msg = trans("httpCode.{$httpCode}");
}
return response()->json(array(
'status' => $httpCode,
'success'=>false,
'error'=>array(
'code'=>$httpCode,
'message'=>$msg
)
),$httpCode);
}