Php Laravel 5将路由发布到索引而不是存储
我正在开发一个Laravel5RESTfulAPI,它似乎没有正确地路由POST请求 这是my routes.php:Php Laravel 5将路由发布到索引而不是存储,php,laravel-5,laravel-routing,restful-architecture,Php,Laravel 5,Laravel Routing,Restful Architecture,我正在开发一个Laravel5RESTfulAPI,它似乎没有正确地路由POST请求 这是my routes.php: Route::group(array('prefix' => 'api/v1'), function() { Route::resource('messages', 'IncomingMessages'); }); 这是我的控制器: class IncomingMessages extends Controller { public functio
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";
}
}
事情就是这样的:
- 请求
-->这是索引获取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
- 获取| 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
- 获取| HEAD:api/v1/messages/{messages}:api.v1.messages.show:App\Http\Controllers\IncomingMessages@show
- 获取| 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
- 修补程序: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
- 我正在尝试使用铬插件“邮递员”的要求
/
。因此,不要使用此URL:
mydomain.com/api/v1/messages/
我试过这个:
mydomain.com/api/v1/messages
这个问题是由于在URL中添加了一个尾随的
/
而引起的。因此,不要使用此URL:
mydomain.com/api/v1/messages/
mydomain.com/api/v1/messages/
我试过这个:
mydomain.com/api/v1/messages
mydomain.com/api/v1/messages
它成功了
我通过查看服务器的日志发现了它。这就是我发现发送到URL
消息的POST请求被重定向的原因。如果您仍然存在此问题,并且路由正在使用FormRequest
检查其中是否有authorize
函数,因为如果返回false它将重定向Hi brother运行此命令php artisan routes并显示结果。Hi@ZakariaAcharki,我编辑了我的问题以显示php artisan返回的内容。@ZakariaAcharki你给了我线索。我检查了Apache日志,发现每个帖子都有301重定向。我终于意识到我在URL中添加了一个尾随“/”。移除它修复了它。@Inigo我通过查看web服务器的日志发现了问题。我在那里看到每个POST请求都被重定向。请添加您的解决方案作为答案并接受:)PUT mydomain.com/api/v1/messages/
(不传递id)是重定向索引()或列表。有限制它的选项吗?@San,在这种情况下,您不应该使用Route::resource(),而应该使用Route::put(“/api/v1/messages”,YourController@yourMethod.