【问题标题】:Laravel route works perfectly locally but not on remote. (Dingo Api)Laravel 路由在本地运行良好,但在远程运行不正常。 (野狗阿皮)
【发布时间】:2016-02-26 18:12:19
【问题描述】:

我正在将 dingo/api 用于一个项目,并且我的所有路线都在 1 之外工作。

routes.php

    $api = app('api.router');
    $api->version('v1',['prefix' => 'api'], function ($api) {

        $api->post('users', "App\Http\Controllers\Auth\UsersController@store");
...
        });

存储方法:

/**
     *
     * @param  \App\Http\Requests\Auth\StoreUserRequest  $request
     * @return \Illuminate\Http\Response
     */
    public function store(StoreUserRequest $request)
    {
        if( ! $this->isAdminRequest() )
        {
            return $this->dispatch(new RegisterUserCommand($request));
        }
    }

这条路线抛出405 Method Not Allowed Exception

php artisan api:routes 表明它已在本地和服务器上注册。 我正在使用 POSTMAN 来测试我的 api 并拥有所有必填字段。 作为回应,我确实得到了 Allow : POST

注意:

  • 还有其他完美的发布路线。
  • 还有其他 完美运行的 UsersController 路由
  • 我已尝试删除所有其他路由,但仅此而已,它仍然无法正常工作。

感谢任何帮助。谢谢。

更新:

好吧,这对我来说是一个非常愚蠢的错误。我正在点击 'domain/api/users/'。删除尾随 '/' 有效。 但问题是,本地 '/' 工作,而不是在服务器上。 因此,可能会保留这个问题以进行一些解释。

【问题讨论】:

  • 是控制器类名/控制器文件名,和路由文件中提到的一样...??
  • 是的。正如我所说,还有其他用户路线可以完美运行。
  • 我在没有 https:// 的情况下调用它
  • 4年后还有机会更新吗?我现在遇到了这个确切的问题。

标签: php laravel-5.1 laravel-routing dingo-api


【解决方案1】:

非常好的问题,后来我自己也遇到过这个问题。您的更新应该在答案中,所以如果您这样做,我可能会删除我的。对我来说,问题是我的action 中的斜杠,例如/some/action/ 而不是 /some/action 路由期望它以后一种形式出现。

考虑到本地环境中的行为,我曾假设 Laravel 会将这个可选的尾部斜杠作为一个特性来处理,但事实并非如此。

【讨论】:

  • 我保留了这个,因为我无法找到发生这种情况的原因。我在本地和服务器上有不同的配置。也许是因为这个。或者可能是因为任何 APACHE 配置或 .htaccess。我希望找到什么会影响和导致这种行为。
  • 这是有道理的,因为您的本地可能正在运行 nginx,而您的服务器在 Apache 上。他们处理事情的方式可能是问题的原因
  • 不,它都是 Apache,但版本不同。稍后我会进一步研究并在此处更新。
  • 在我的例子中,它是一个宅基地环境,如果没有记错的话可能正在运行 nginx
猜你喜欢
  • 2013-02-12
  • 2017-07-22
  • 1970-01-01
  • 2013-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-24
  • 1970-01-01
相关资源
最近更新 更多