Laravel 5.8的POST请求总是抛出欢迎页面。

10 浏览
0 Comments

Laravel 5.8的POST请求总是抛出欢迎页面。

我正在尝试使用Postman测试我的API,但是当我发送POST请求时,它总是将我重定向到欢迎页面。我已经在其中设置了XSRF令牌,但仍然不起作用。\n这是我的api.php路由:\n

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

\n这是我的FeedbackController中的store方法:\n

/**
 * 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);
}

\n这是我的web.php文件:\n

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'
]);

\n这是我Postman请求的屏幕截图:[链接到截图](https://i.stack.imgur.com/Hu4GW.jpg)

0
0 Comments

问题的原因是在app\Http\Requests\StoreFeedback文件中的布尔验证。当我使用truefalse时,验证失败并将我重定向到欢迎页。相反,当我使用01时,参数被接受并正常工作。

解决方法:在app\Http\Requests\StoreFeedback文件中,将布尔验证的参数值改为01

0
0 Comments

问题出现的原因是使用了`Route::resource`,这个方法会为你设置一些默认的路由,并给它们命名。而问题在于,`Route::resource`会为`POST`请求自动生成一个`store`方法,但是由于表单验证失败,所以会将用户重定向到之前的页面,而在Postman中是没有之前的页面的,所以会重定向到欢迎页面。解决方法是修改路由为`Route::post('products/{product}/feedbacks', 'FeedbackController');`,并在控制器的`store`方法中加入`dd($request->body);`打印出请求中的参数。

0
0 Comments

问题的原因是在于App\Http\Requests\StoreFeedback类中。原因是通过表单验证器将请求无效,导致请求被传回到默认的/URL。

下面是层次结构:

但是,如果想要获取错误信息,可以将头部Accept:application/json传递给请求头部,就可以获取错误信息。

原因是在这里处理了ValidationException

我刚刚要发布这个问题!在文档中可以看到如果验证失败,将生成重定向响应,将用户发送回其先前的位置。laravel.com/docs/5.7/validation

自从去年以来,我一直在探索Laravel代码。这让我茅塞顿开。:D

谢谢你的回答。我错过了验证的一个重要部分。

0