我正在使用 Laravel 5 RESTful API,它似乎没有正确路由 POST 请求。
这是我的 routes.php:
Route::group(array('prefix' => 'api/v1'), function()
{
Route::resource('messages', 'IncomingMessages');
});
这是我的 Controller :
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
返回的内容:
- 获取|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 ;应用\Http\Controllers\IncomingMessages@update
- 补丁:api/v1/messages/{messages}:App\Http\Controllers\IncomingMessages@update
- 删除 : api/v1/messages/{messages} : api.v1.messages.destroy : App\Http\Controllers\IncomingMessages@destroy
所以,我的问题是:
我错过了什么?为什么它路由到 index()
而不是路由到 store()
?
注意事项:
- 我在
Kernel.php
中禁用了“VerifyCsrfToken” - 我正在尝试使用 Chromium 插件“Postman”发送请求。
更新:
问题是在 URL 中添加尾随 /
。因此,不要使用此 URL:
mydomain.com/api/v1/messages/
我试过这个:
mydomain.com/api/v1/messages
成功了
最佳答案
问题是由于在 URL 中添加了尾随 /
引起的。因此,不要使用此 URL:
mydomain.com/api/v1/messages/
我试过这个:
mydomain.com/api/v1/messages
它奏效了。
我是通过查看服务器日志发现的。这就是我发现对 URL messages/
的 POST 请求被重定向的原因。
关于php - Laravel 5 POST 路由到索引而不是存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31304958/