您好,登錄后才能下訂單哦!
這篇文章主要講解了“如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題”吧!
微信網(wǎng)頁登錄后續(xù)問題
在當(dāng)前情況我們在微信中打開如果沒有登錄會直接跳轉(zhuǎn)到登錄頁面讓進行登錄,但實際上在項目中,用戶從微信打開會直接進入到授權(quán)頁面,而不是賬號密碼登錄
那么這樣的情況最好的方式那就是使用中間件檢測,用戶使用的什么瀏覽器打開的項目
創(chuàng)建檢測瀏覽器的中間件
在中間件里邊判斷是否從微信瀏覽器打開
并且在kernel.php文件中定義我們的中間件
然后在路由里邊加入中間件
我們在重定向的時候使用的是url地址,這樣不好,我們需要使用路由別名
然后修改中間件里邊跳轉(zhuǎn)checkBrowser
之前是這個樣子的
然后我們來訪問一下
這個時候會報路由不存在,這是因為Dingo接管了api的路由服務(wù),所以laravel自帶的route就不會加載api中的路由
那么我們就需要定義一個屬于api的路由助手
首先看一下laravel自帶的路由助手
從代碼中可以看到,首先會通過app解析出在容器中綁定的url的標識,通過在綁定容器中的標識查找既可以找到url的所對應(yīng)的服務(wù)類UrlGenerator
然后我們打開dingo的源碼,可以看到在dingo的助手函數(shù)里邊存在一個助手函數(shù)
根據(jù)注釋理解,就是它會返回一個Dingo\Api\Routing\UrlGenerator的對象,dingo的這個類名的UrlGenerator與laravel自帶的UrlGenerator是同名,這樣就會走dingo的url路由轉(zhuǎn)發(fā)
因此我們就可以理解dingo中的helpers的version() 與laravel的helpers中的app(‘url’)是一個作用。
version() = app(‘url’);
因此根據(jù)與route()這個助手函數(shù)在dingo\helpers中創(chuàng)建一個route_api();把route的內(nèi)容復(fù)制到dingo\helpers.php中
version就是版本的意思,這里就是api的版本號,給個默認,也是env設(shè)置的v1,然后把從route中復(fù)制的代碼修改一下
然后我們可以來做一個測試,為了方便我們直接在web的路由里邊隨便寫一個
測試結(jié)果,證明我們注冊的路由是可以用的
不過這種方式不是很好,因為我們是把自定義的路由放在了dingo的助手函數(shù)里邊,如果更新一次dingo(composer update)就會出現(xiàn)路由不存在,那么下來在解決這個問題
關(guān)于laravel對于helpers.php的加載;
如下內(nèi)容知道即可vendor/laravel/framework/src/Illuminate/Foundation/helpers.php 這是laravel自帶的helpers.php助手函數(shù)文件
它是通過composer.json加載載入的
自定義一個helpare.php到app\Support
因為composer的自動加載就在入口文件public/index.php的第二行就加載了
所以我們在項目的根目錄composer.json中添加下面的內(nèi)容
然后我們進行測試一下,在測試之前,需要把dingo的helpers.php里邊定義的路由助手刪掉
在這里訪問了之后還是不可以,因為我們需要對composer.json進行重新編譯
使用命令:composer dump-autoload
這里是因為在composer.json中寫錯了,一定要注意
然后在刷新訪問就OK了,說明我們的路由助手就已經(jīng)注冊成了
然后回到我們的項目中,訪問,還是會報api_route不存在
修改一下中間件
這樣就直接訪問進來了
感謝各位的閱讀,以上就是“如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。