国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP中Restful api 錯誤提示返回值實現思路

2020-03-22 17:52:38
字體:
來源:轉載
供稿:網友
RESTful架構是一種流行的互聯網軟件架構,它結構清晰,符合標準,易于理解,擴展方便。
REST是Representational State Transfer的縮寫,翻譯為“表現層狀態轉化”。表現層其實就是資源,因此可以理解為“資源狀態轉化”。
網絡應用上的任何實體都可以看作是一種資源,通過一個URI(統一資源定位符)指向它。序言不管是微博還是淘寶,他們都有自己的錯誤返回值格式規范,以及錯誤代碼說明,這樣不但手機端用起來方便,給人的感覺也清晰明了,高大上。遇到問題先找母本,大公司的規范就是我們參照的母本。為此,我仿照了淘寶的錯誤返回值格式,根據微博錯誤代碼制定的標準自定了自己的錯誤代碼,然后在Restful api 上進行測試。下面我將實現思路以及測試結果分享給大家。實現思路我利用抽象工廠模式去實現這樣的一個錯誤返回值。選擇這種模式是因為考慮到了這種模式可以提供一個創建一系列相關或相互依賴對象的接口,與我的需求很接近。代碼分析1、按這個路徑common/hint,我新建了個error文件夾存放我的html' target='_blank'>錯誤提示程序文件。這文件夾中主要有這幾個文件:2、Hint.php入口文件。定義一個抽象類,里邊只寫一個方法。interface Hint {function Error($_errors,$code);}3、Template.php 實現Hint這個接口。錯誤返回值的格式就在這里定義。class Template implements Hint{function Error($_errors,$code) { if (empty($_errors)) {print_r(json_encode([]));} else { $errors['error']['name'] = 'Not Found';$errors['error']['message'] = $_errors;$errors['error']['error_code'] = $code; print_r(json_encode($errors));}4、createMsg.php 再創建一個createMsg抽象類。將對象的創建抽象成一個接口。interface createMsg { function Msg(); }5、用FactoryMsg 類去實現createMsg接口。返回實例化的Template。class FactoryMsg implements createMsg{function Msg() {return new Template;}6、ErrorMsg.php 給Template里邊的Error方法傳參。class ErrorMsg {// 抽象工廠里的靜態方法public static function Info($_errors) { $Factory = new FactoryMsg;$result = strstr($_errors,Yii::t('yii','Not exist')); //數據不存在 20001$result1 = strstr($_errors,Yii::t('yii','Null')); //參數不能為空 20002$result2 = strstr($_errors,Yii::t('yii','Fail')); //新增、更新、刪除失敗 20003$result3 = strstr($_errors,Yii::t('yii','Not right')); //XX不正確 20004$result4 = strstr($_errors,Yii::t('yii','Robc')); //XX無權限 20005//數據不存在 20001if(!empty($result)){ $M = $Factory- Msg();$M- Error($_errors,'20001');die;//參數不能為空 20002if(!empty($result1)){ $M = $Factory- Msg();$M- Error($_errors,'20002');die;//新增、更新、刪除失敗 20003if(!empty($result2)){ $M = $Factory- Msg();$M- Error($_errors,'20003');die;//XX不正確 20004if(!empty($result3)){ $M = $Factory- Msg();$M- Error($_errors,'20004');die;//XX無權限 20005if(!empty($result4)){ $M = $Factory- Msg();$M- Error($_errors,'20005');die;//默認類型 21000$M = $Factory- Msg();$M- Error($_errors,'21000');}7、調用方式。use common/hint/error/ErrorMsg;ErrorMsg::Info(Yii::t('yii','failure'));8、測試結果。"error": {"name": "Not Found","message": "操作失敗","error_code": "20003"}完成。整個實現過程我采用語言包的形式,這樣有利于后期多語言的切換。常見問題1、采用這種字符串模糊搜索很泛,無法達到具體錯誤類型返回對應具體代碼的要求。如有更好的建議,歡迎大家提議。$result = strstr($_errors,Yii::t('yii','Not exist'));2、實現過程中沒有考慮到今后多語言切換的問題,然后直接用傳統的方式傳提示語。比如:ErrorMsg::Info("操作失敗");這樣是無法實現多語言切換的。建議大家用語言包的方式傳參。PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丰县| 靖边县| 柘荣县| 汕尾市| 龙海市| 航空| 吴桥县| 库车县| 芜湖县| 寿光市| 呼图壁县| 河南省| 敦煌市| 平谷区| 安国市| 山丹县| 神池县| 罗城| 凤山县| 栾川县| 徐州市| 台江县| 乐清市| 舟曲县| 乐陵市| 加查县| 青田县| 营山县| 卓尼县| 南丹县| 祁阳县| 武山县| 河东区| 凤庆县| 沾益县| 南安市| 西昌市| 门源| 十堰市| 邻水| 封丘县|