Laravel 5.8 POST请求始终会抛出欢迎页面

时间:2019-03-03 00:33:16

标签: php laravel

我正在尝试使用邮递员测试我的API,但是当我遇到POST请求时,它总是把我引到欢迎页面。我已经在内部设置了XSRF令牌,但仍然无法正常工作。

这是我的api.php路线:

Route::middleware('auth:api')->get('/user', function (Request $request) {
    return $request->user();
});
Route::resource('products/{product}/feedbacks', 'FeedbackController');

这是我来自FeedbackController的存储方法:

/**
 * Store a newly created resource in storage.
 *
 * @param  \App\Http\Requests\StoreFeedback  $request
 * @return \Illuminate\Http\Response
 */
public function store(Product $product, StoreFeedback $request)
{
   $product->addFeedback(
      $request->validated()
   );

   return response()->json([
      "status" => "success",
      "message" => "Your feedback has been submitted."
   ], 200);
}

这是我的web.php文件:


Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Route::get('/home', 'HomeController@index')->name('home');

Route::resource('product-categories', 'ProductCategoryController')->parameters([
    'product_category' => 'productCategory'
]);

Route::resource('product-sub-categories', 'ProductSubCategoryController')->parameters([
    'product_sub_category' => 'productCategory'
]);

这是我的邮递员请求的屏幕截图:Link to the screenshot

3 个答案:

答案 0 :(得分:4)

POST请求始终会抛出欢迎页面

问题出在您的checkpoints课堂上。

如何?

因为您正在通过表单验证器传递请求。这会使表单请求无效。这就是为什么将请求传回到上一个URL(默认为App\Http\Requests\StoreFeedback)的原因。

下面的层级

但是,如果您想获取错误,则只需传递HEADER /来请求HEADER,就可以获取错误。

原因:Url Resolver

答案 1 :(得分:1)

我认为它显示的是同一页面,因为您正在使用Question中的Route::resource

RESTful资源控制器为您设置了一些默认路由,甚至为它们命名。

Route::resource('users', 'UsersController');

为您提供以下命名路线:

Verb          Path                        Action  Route Name
GET           /users                      index   users.index
GET           /users/create               create  users.create
POST          /users                      store   users.store
GET           /users/{user}               show    users.show
GET           /users/{user}/edit          edit    users.edit
PUT|PATCH     /users/{user}               update  users.update
DELETE        /users/{user}               destroy users.destroy

我的猜测是:您基本上是一遍又一遍地在您的FeedbackController中调用index()函数

将路线更改为:

Route::post('products/{product}/feedbacks', 'FeedbackController@store');

编辑,将控制器功能更改为:

public function store(Request $request)
{
   dd($request->body); // or the key you send it on the postman
}

告诉我们你得到了什么

答案 2 :(得分:1)

我刚刚发现了问题,这是来自app\Http\Requests\StoreFeedback ,如ssi-anik先生所说的。我不知道为什么要进行布尔验证,当我输入truefalse时,它失败并重定向到欢迎页面。

相反,我使用了01,它可以接受参数并且可以正常工作。