Laravel 5 POST路由到索引而不是商店

时间:2015-07-08 22:31:01

标签: php laravel-5 laravel-routing restful-architecture

我正在开发一个似乎没有正确路由POST请求的Laravel 5 RESTful API。

这是我的routes.php:

Route::group(array('prefix' => 'api/v1'), function()
{
    Route::resource('messages', 'IncomingMessages');
});

这是我的控制者:

class IncomingMessages extends Controller
{   
    public function index() {
        return "This is index";
    }

    public function store() {
        return "This is store";
    }

    public function update() {
        return "This is update";
    }
}

这就是发生的事情:

  • 请求GET mydomain.com/api/v1/messages/ - >这是索引
  • 请求PUT mydomain.com/api/v1/messages/1 - >这是更新
  • 请求POST mydomain.com/api/v1/messages/ - > 这是索引

这是php artisan route:list返回的内容:

  • GET | HEAD:api / v1 / messages:api.v1.messages.index:App \ Http \ Controllers \ IncomingMessages @index
  • GET | HEAD:api / v1 / messages / create:api.v1.messages.create:App \ Http \ Controllers \ IncomingMessages @ create
  • POST:api / v1 / messages:api.v1.messages.store:App \ Http \ Controllers \ IncomingMessages @ store
  • GET | HEAD:api / v1 / messages / {messages}:api.v1.messages.show:App \ Http \ Controllers \ IncomingMessages @ show
  • GET | HEAD:api / v1 / messages / {messages} / edit:api.v1.messages.edit:App \ Http \ Controllers \ IncomingMessages @ edit
  • PUT:api / v1 / messages / {messages}:api.v1.messages.update; App \ Http \ Controllers \ IncomingMessages @ update
  • PATCH:api / v1 / messages / {messages}:App \ Http \ Controllers \ IncomingMessages @ update
  • DELETE:api / v1 / messages / {messages}:api.v1.messages.destroy:App \ Http \ Controllers \ IncomingMessages @ destroy

所以,我的问题是:

我错过了什么?为什么路由到index()而不是路由到store()

注意:

  • 我在Kernel.php
  • 中禁用了“VerifyCsrfToken”
  • 我正在使用Chromium插件“Postman”尝试请求。

更新

问题是在网址中添加了一个尾随/。所以,而不是使用此URL:

mydomain.com/api/v1/messages/

我试过这个:

mydomain.com/api/v1/messages

并且有效

2 个答案:

答案 0 :(得分:6)

问题是由添加到网址的尾随/引起的。所以,而不是使用此URL:

mydomain.com/api/v1/messages/

我试过这个:

mydomain.com/api/v1/messages

并且有效。

我通过查看服务器的日志来发现它。这就是我发现对URL messages/的POST请求被重定向的方式。

答案 1 :(得分:0)

如果您仍然遇到此问题,并且路由正在使用FormRequest

检查其中是否有authorize函数,因为如果返回false,它将重定向。