溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

發(fā)布時間:2021-07-21 11:34:08 來源:億速云 閱讀:587 作者:chen 欄目:大數(shù)據(jù)

這篇文章主要講解了“如何解決引用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)建檢測瀏覽器的中間件

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

在中間件里邊判斷是否從微信瀏覽器打開

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

并且在kernel.php文件中定義我們的中間件

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后在路由里邊加入中間件

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

我們在重定向的時候使用的是url地址,這樣不好,我們需要使用路由別名

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后修改中間件里邊跳轉(zhuǎn)checkBrowser

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

之前是這個樣子的

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后我們來訪問一下

這個時候會報路由不存在,這是因為Dingo接管了api的路由服務(wù),所以laravel自帶的route就不會加載api中的路由

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

那么我們就需要定義一個屬于api的路由助手

首先看一下laravel自帶的路由助手

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題從代碼中可以看到,首先會通過app解析出在容器中綁定的url的標識,通過在綁定容器中的標識查找既可以找到url的所對應(yīng)的服務(wù)類UrlGenerator

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后我們打開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’);

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題 因此根據(jù)與route()這個助手函數(shù)在dingo\helpers中創(chuàng)建一個route_api();把route的內(nèi)容復(fù)制到dingo\helpers.php中

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

version就是版本的意思,這里就是api的版本號,給個默認,也是env設(shè)置的v1,然后把從route中復(fù)制的代碼修改一下

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后我們可以來做一個測試,為了方便我們直接在web的路由里邊隨便寫一個

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

測試結(jié)果,證明我們注冊的路由是可以用的

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

不過這種方式不是很好,因為我們是把自定義的路由放在了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加載載入的

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

自定義一個helpare.php到app\Support

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

因為composer的自動加載就在入口文件public/index.php的第二行就加載了

所以我們在項目的根目錄composer.json中添加下面的內(nèi)容

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后我們進行測試一下,在測試之前,需要把dingo的helpers.php里邊定義的路由助手刪掉

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

在這里訪問了之后還是不可以,因為我們需要對composer.json進行重新編譯

使用命令:composer dump-autoload

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

這里是因為在composer.json中寫錯了,一定要注意

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后在刷新訪問就OK了,說明我們的路由助手就已經(jīng)注冊成了

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

然后回到我們的項目中,訪問,還是會報api_route不存在

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

修改一下中間件

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

這樣就直接訪問進來了

如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題

感謝各位的閱讀,以上就是“如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對如何解決引用Dingo后laravel的api路由服務(wù)不可用的問題這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關(guān)知識點的文章,歡迎關(guān)注!

向AI問一下細節(jié)

免責(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)容。

AI