我安裝了passport,并在api.php檔案中設定了一個路由。網頁路由可以作業,但api路由總是給我一個404 - Not Found in Postman.
。這是我的路由。
這是我的UserController函式
CodePudding
我被這個問題困擾了一個星期。可能有很多事情會導致這個問題。
1 - 確保你正確安裝了passport。似乎laravel 8預裝了 "Sanctum",所以有可能你會在passport的一些安裝要求上犯錯。再次進行安裝。
![]()
看看你的用戶模型,確保你有 "use LaravelPassportHasApiTokens; "而不是 "use LaravelSanctumHasApiTokens;"
![]()
2 如果你不使用 "Sanctum",你最好從你的專案中洗掉它
進入VSCODE左側欄的搜索,搜索 "Sanctum"。
點擊 "composer.json",進入require部分,仔細洗掉 "Sanctum "需求。同時檢查所有其他的搜索結果,以確保你沒有在一個應該是護照的地方使用Sanctum。如果需要的話,請洗掉它們。
3- 在你的終端,鍵入下面的命令來更新 composer 并生成一個新的鎖檔案
composer update
4- 如果你像我一樣把你的用戶模型移到了一個新的檔案夾里(例如:版本1),請到 "config/auth.php "中,用用戶模型的正確路徑更新用戶的提供者
5- 確保在app/Http/Kernel.php的api部分,"LaravelSanctumHttpMiddlewareEnsureFrontendRequestsAreStateful::class "被注釋掉。
6- 進入終端,從快取中清除你的路由,用下面的命令列出它們,檢查你在api.php中列出的路由是否顯示在那里。
php artisan route:clear
php artisan route:list
如果 "php artisan route:list "顯示錯誤,那么請確保你的路由被正確宣告。為了清楚起見,請確保你使用控制器的完整路徑,并交叉檢查你的UserController,以確保函式與api.php檔案中的內容完全匹配(它們是區分大小寫的)。另外,如果你在路由中使用控制器,請在上面宣告 "use AppHttpControllersversion1UserController;",如下圖所示。在終端重復 "php artisan route:clear "和 "php artisan route:list",以確保沒有錯誤并且你的路由被列出。
7- 確保你在postman中呼叫的url是正確的,方法也是正確的。
記住,如果你在api.php中的url是"/v1/user/register",那么在postman中,你應該有"api/v1/user/register"。這意味著你的最終網址將是 "http://myvhostname.local/api/v1/user/register"
。記住,如果你在api.php中宣告你的路由是一個 "get",那么請確保它在postman中是一個 "get"。如果它是一個帖子,請確保它們在postman中也是匹配的。
進入postman的 "headers "部分,并包括 "Accept=application/json",如下所示
8- 如果你仍然有404-Not Found,請在 "Applications >> XAMPP >> xamppfiles >> etc >> extra "中打開你的vhost檔案 "httpd-vhosts.conf",確保你的vhost被正確宣告,如下所示。不正確的宣告會使web路由作業,但api路由不會。請密切關注 "Allowoverride All"。
你的路線現在應該作業了。如果這對你有用,請投上一票
。uj5u.com熱心網友回復:
只是一個簡單的問題。如果錯誤代碼是404,請仔細檢查你在Postman中進行的是POST請求,而不是GET。
uj5u.com熱心網友回復:
Pl通過
php artisan route:list檢查路由。同時檢查你的APP_URL,在。ENV檔案轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/309778.html
標籤:










