在laravel中,dingo是針對laravel、lumen框架的api開發(fā)工具包;主要有路由版本管理、“Http Exception”異常處理和“Response Transform”轉(zhuǎn)化響應格式三個功能。
本文操作環(huán)境:Windows10系統(tǒng)、Laravel6版、Dell G3電腦。
laravel中dingo是什么
dingo是針對laravel、lumen框架的api開發(fā)工具包。
粗看文檔目錄,基于api規(guī)范,它圍繞了三個主要功能:
-
路由版本管理
-
Http Exception 異常處理
-
Response Transform 轉(zhuǎn)化響應格式
dingoapi是一個laravel的開源插件,可以在github上搜索到,現(xiàn)在在做一個項目,項目中總是會有后端跟前端的json數(shù)據(jù)交互,而這個dingoapi為json交互提供了很大的便利。
路由版本控制
一、相關配置
1聲明api服務
api規(guī)范要求,接口開發(fā)要么帶api前綴(http://XXX.com/api/xxx),要么是子域名(http://api.XXX.com/xxx),通過這樣的標識,代表請求的是api接口服務。
所以,API_PREFIX=api和API_DOMAIN=api.myapp.com須設置其中一個。
.env可能需要配置的選項
當然它的作用并非只是個標識,我們知道dingo的路由與laravel的路由是共存的,dingo便是通過這個特征來判斷的。
2版本控制
dingo提供了自己的路由服務,如果http://XXX.com/api/xxx或http://api.XXX.com/xxx訪問,它則認為是api請求,dingo路由服務DingoApiRoutingRouter會接管laravel自帶的路由服務IlluminateRoutingRouter(至于是如何接管的,之后再說),它同樣有get(),post(),match(),group()…方法,相當于另一套路由體系。
laravel區(qū)分版本的話,可能需要帶上一個v1前綴,例如http://XXX.com/api/v1或者http://XXX.com/api/v2。而dingo是通過 header頭Accept處理的。它的格式是Accept: application/vnd.YOUR_SUBTYPE.v1+json。意味著你需要發(fā)送一個accept的請求頭才能訪問。
配置文件中,默認這種模式是不強制的,API_STRICT=false,但只能訪問配置文件中默認的版本,’version’ => env(‘API_VERSION’, ‘v1’),。
如果設置為true,即開啟嚴格模式,則必須發(fā)送accept頭,不能通過瀏覽器直接訪問你的 API。
.env可能需要配置的選項
API_STRICT=true //開啟嚴格模式必須不論v1,v2都須帶上accept頭信息
API_VERSION=v1 //在沒有聲明版本號時的默認版本號
若開啟嚴格模式
關于header頭的accept屬性幾個選項:
Accept: application/vnd.YOUR_SUBTYPE.v1+json
API_STANDARDS_TREE=x,prs,vnd Standards Tree 標準樹
API_SUBTYPE=myapp 子類型:程序或項目的短名稱
v1:版本號
json:返回的格式,也可以為jsonp
.env可能需要配置的選項
API_STANDARDS_TREE=prs
API_SUBTYPE=lara
API_DEFAULT_FORMAT=json //默認
【相關推薦:laravel視頻教程】