3

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

路由.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/'。删除尾随的“/”有效。但问题是,本地“/”有效,而不是在服务器上。因此,可能会保留这个问题以进行一些解释。

4

1 回答 1

1

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

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

于 2016-07-27T14:18:31.917 回答