摘要:源碼使用本文使用的數(shù)據(jù)庫與基礎(chǔ)篇相同,故不再重復(fù)說明。使用的用法與之前的自定義用法類似,甚至更加簡單。首先定義路由如果要查看路由,需要使用創(chuàng)建控制器需要使用這個。
源碼
使用 Dingo Api初始化本文使用的數(shù)據(jù)庫與基礎(chǔ)篇相同,故不再重復(fù)說明。
安裝
$ composer require dingo/api:1.0.x@dev
注冊
/config/app.php "providers" => [ DingoApiProviderLaravelServiceProvider::class, ],
為了能夠自定義配置,首先需要執(zhí)行
$ php artisan vendor:publish --provider="DingoApiProviderLaravelServiceProvider" Copied File [/vendor/dingo/api/config/api.php] To [/config/api.php] Publishing complete.
可以看到多了個 api.php 的配置文件,我們就可以在 .env 中對其進行配置,一些常用的配置項:
/.env API_STANDARDS_TREE=vnd # 公開的及商業(yè)項目用 vnd API_SUBTYPE=api-demo # 項目簡稱 API_PREFIX=api # 前綴 API_VERSION=v1 # 不提供版本時使用的版本號 API_NAME="Laravel Api Demo" # 使用 API Blueprint 命令生成文檔的時候才用到 API_STRICT=false # Strict 模式要求客戶端發(fā)送 Accept 頭而不是默認在配置文件中指定的版本,這意味著你不能通過Web瀏覽器瀏覽API API_DEFAULT_FORMAT=json API_DEBUG=true # 開啟 debug 模式
創(chuàng)建一個基本的端點(路由在 api 中的叫法)測試下是否配置成功
/routes/api.php $api = app("DingoApiRoutingRouter"); $api->version("v1", function ($api) { $api->get("test", function () { return "It is ok"; }); });
訪問 /api/test,返回 It is ok。
使用Dingo 的用法與之前的自定義 api 用法類似,甚至更加簡單。首先定義路由
/routes/api.php $api = app("DingoApiRoutingRouter"); $api->version("v1", function ($api) { $api->group(["namespace" => "AppApiControllers"], function ($api) { $api->resource("lessons","LessonController"); }); });
如果要查看路由,需要使用
$ php artisan api:routes
創(chuàng)建控制器 - 需要使用 Helpers 這個 trait。
/app/Api/Controllers/LessonController.php collection($lessons, new LessonTransformer()); } public function show($id) { // 盡管我們返回的不是 json,但是 dingo 會自動進行轉(zhuǎn)化 return Lesson::findOrFail($id); } }
創(chuàng)建對應(yīng)的 LessonTransformer
/app/Api/Transformers/LessonTransformer.php $lesson["title"], "content" => $lesson["body"], "is_free" => (bool) $lesson["free"] ]; } }
訪問 api/lessons/3,結(jié)果如下
可以看出,Dingo 自動將響應(yīng)的數(shù)據(jù)轉(zhuǎn)化為了 json,不過我們還需要將其格式化
public function show($id) { $lesson = Lesson::findOrFail($id); return $this->response->item($lesson, new LessonTransformer()); }
現(xiàn)在,就可以得到格式化的數(shù)據(jù)了
跟 Laravel 類似,也可以使用分頁
public function index() { $lessons = Lesson::paginate(15); return $this->response->paginator($lessons, new LessonTransformer()); }
將會返回 15 條信息以及分頁信息
當(dāng)請求出錯時,Dingo 會自動幫我們進行處理
也可以自定義
public function show($id) { $lesson = Lesson::find($id); if(!$lesson){ return $this->response->errorNotFound("錯誤的 id"); } return $this->response->item($lesson, new LessonTransformer()); }
結(jié)果如下
結(jié)合簡單的認證我們可以在 Api 中加入自帶的驗證功能,比如 HTTP 基礎(chǔ)認證。首先,創(chuàng)建一個測試用戶
$ php artisan tinker >>> $user = new AppUser(); >>> $user->name = "zen" >>> $user->email = "ihuangmx@qq.com" >>> $user->password = bcrypt("123456") >>> $user->save() => true
在控制器中加入 Laravel 自帶的中間件即可
public function __construct() { $this->middleware("auth.basic"); }
現(xiàn)在訪問時會提示輸入用戶名和密碼,這里的用戶名指的是郵箱
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/23055.html
摘要:我的博客中文文檔中使用輔助文章參考這篇文章基本就能搭建出環(huán)境,我使用的版本跟他一樣,不知道別的版本有啥大的區(qū)別,但是網(wǎng)上找的其他一些文章使用的是舊的版本,封裝的東西路徑可能不一樣,可能會保錯,有些文檔還說要手動添加和,其實新版本不需要。 我的github博客:https://zgxxx.github.io/ dingo api 中文文檔: https://www.bookstack....
摘要:在最近的開發(fā)開發(fā)項目中,我使用了這個第三方庫。是個很強大的庫,但在開發(fā)的過程中,需要自定義響應(yīng)字段。剛開始使用時,返回如下手機號格式不正確這是輸入字段驗證錯誤時,返回的結(jié)果。尤其是,需要對每一個對象進行新建,然后序列化。 在最近的開發(fā)開發(fā)項目中,我使用了Dingo/Api這個第三方Api庫。Dingo是個很強大的Api庫, 但在開發(fā)的過程中,需要自定義響應(yīng)字段。 剛開始使用Ding/A...
摘要:學(xué)習(xí)了一段時間的小結(jié)一下最近做的小任務(wù)寫下來才知道好亂糟糟,還是以記錄學(xué)習(xí)的資料為主,寫的很糟糕,還需要再揣度多屢屢思路。 學(xué)習(xí)了一段時間的laravel,小結(jié)一下最近做的laravel小任務(wù),寫下來才知道好亂糟糟,還是以記錄學(xué)習(xí)的資料為主,寫的很糟糕,還需要再揣度多屢屢思路。20151103-16 源碼地址:https://github.com/dingyiming/xc-add...
摘要:背景在近期使用處理接口時,發(fā)現(xiàn)本身中無法捕獲異常。后來查閱資料發(fā)現(xiàn),接管了請求的異常處理。導(dǎo)致無法自定義錯誤返回,很是頭疼。最后在的找到了處理方法。 背景 在近期使用Dingo api處理接口時,發(fā)現(xiàn)laravel本身appExceptionsHandler中無法捕獲異常。 后來查閱資料發(fā)現(xiàn),Dingo api接管了api請求的異常處理。導(dǎo)致無法自定義錯誤返回,很是頭疼。 最后在di...
摘要:前言由于在度娘找了半天根本一大堆版本,弄得我死去活來的,每個都試了一堆問題,到底你們做完有沒有總結(jié)過一次然后有幾個使用,完全不行啊,太監(jiān)版不是我想要的。后來,終于找到例子并實測成功。 前言 由于在度娘找了半天根本一大堆Copy版本,弄得我死去活來的,每個都試了一堆問題,到底你們做完有沒有總結(jié)過一次?然后有幾個使用lunmen+dingo api+jwt,完全不行啊,太監(jiān)版不是我想要的。...
閱讀 634·2021-09-22 10:02
閱讀 6326·2021-09-03 10:49
閱讀 565·2021-09-02 09:47
閱讀 2151·2019-08-30 15:53
閱讀 2929·2019-08-30 15:44
閱讀 900·2019-08-30 13:20
閱讀 1812·2019-08-29 16:32
閱讀 889·2019-08-29 12:46