【问题标题】:Laravel API Routes using web middleware are not found未找到使用 Web 中间件的 Laravel API 路由
【发布时间】:2019-12-27 20:48:42
【问题描述】:

我正在尝试设置一个简单的 web api 来更新我的数据库中的一些信息。

例如,当尝试转到 127.0.0.1/api/login 时,它会给出 404 未找到。

这是一个使用 Laravel Installer 2.1.0 的新项目。 我尝试在 RouteServiceProvider.php 中将中间件设置为“web”

这是我的路线\api.php:

Route::get('/login', function (Request $request) {
    return "login";
});

Route::get('/register', function (Request $request) {
    return "register";
});

当尝试访问 localhost/api/login 时,它会给出 404 而不是“login” 当我做php artisan route:list 我得到:

+--------+----------+--------------+-------+---------------------------------------------------+------------+
| Domain | Method   | URI          | Name  | Action                                            | Middleware |
+--------+----------+--------------+-------+---------------------------------------------------+------------+
|        | GET|HEAD | /            |       | App\Http\Controllers\PagesController@Index        | web,auth   |
|        | GET|HEAD | account      |       | App\Http\Controllers\PagesController@Account      | web,auth   |
|        | GET|HEAD | api/command  |       | Closure                                           | web        |
|        | GET|HEAD | api/login    |       | Closure                                           | web        |
|        | GET|HEAD | api/register |       | Closure                                           | web        |
|        | GET|HEAD | builder      |       | App\Http\Controllers\PagesController@Builder      | web,auth   |
|        | GET|HEAD | login        | login | App\Http\Controllers\PagesController@Login        | web        |
|        | GET|HEAD | logout       |       | App\Http\Controllers\LoginController@Logout       | web        |
|        | POST     | signin       |       | App\Http\Controllers\LoginController@Authenticate | web        |
|        | GET|HEAD | signin       |       | Closure                                           | web        |
+--------+----------+--------------+-------+---------------------------------------------------+------------+

这是我在 apache 上的虚拟主机:

<VirtualHost 127.0.0.1:80>
    DocumentRoot "E:\Xamp\htdocs\OnyxDashboard\public"
    DirectoryIndex index.php      
    <Directory "E:\Xamp\htdocs\OnyxDashboard\public">
        Options All
        AllowOverride All
        Order Allow,Deny
        Allow from all
    </Directory>
</VirtualHost>

编辑:我在 Windows 上使用 laravel 并通过启动我的 XAMPP 网络服务器来启动它 编辑 2:添加了 apache vhost 配置

【问题讨论】:

  • 如何启动应用程序?通过 artisan、Apache、PHP 开发服务器...?
  • 我在我的 XAMPP apache-vhost.conf 中添加了一个虚拟主机以指向 /public 目录
  • 您在正确的端口上吗?您也可以发布虚拟主机配置吗?只是为了让一切都在那里,因为这里的这些东西看起来不错。
  • 确保您使用的是正确的端口。默认端口是 8000。另外,尝试使用 localhost:8000/api/login
  • 添加了我使用的虚拟主机配置。我应该补充一点,我有一些可以访问的视图。比如登录/索引页面。唯一不起作用的(截至目前)是 API 路由

标签: php laravel web


【解决方案1】:

我认为问题在于您提出的请求。您需要尝试使用PostmancURL 之类的东西,并确保在您的标题中包含

Accept: application/json

问题是您的浏览器默认不会执行此操作。尝试从终端运行以下命令,看看是否成功:

curl -X GET \
  http://127.0.0.1/api/login \
  -H 'Accept: application/json'

【讨论】:

    猜你喜欢
    • 2018-12-27
    • 2013-06-02
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 2017-08-16
    • 2014-12-31
    • 1970-01-01
    相关资源
    最近更新 更多