我尝试使用postman测试我的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'
]);
这是我的 Postman 请求的截图:Link to the screenshot
6条答案
按热度按时间gzjq41n41#
POST请求总是抛出欢迎页面
问题出在
App\Http\Requests\StoreFeedback
类中。如何?
因为你是通过表单验证器传递请求的,这会使表单请求无效,这就是为什么要将请求传递回之前的URL,默认情况下会变成
/
。下面的层次结构
但是,如果您想获得错误,只需将HEADER
Accept:application/json
传递给request HEADER,您就会获得错误。原因:此处处理了验证异常
sqxo8psd2#
我认为它显示相同的页面是因为您使用的是
Route::resource
,如Question中所述,RESTful资源控制器为您设置一些默认路由,甚至为它们命名。
为您提供以下命名路由:
我的猜测是:基本上就是一遍又一遍地调用FeedbackController中的
index()
函数将您的路线更改为:
编辑将控制器功能更改为:
让我们看看你的本事
ugmeyewa3#
我刚发现问题,就像ssi-anik先生说的一样,它来自
app\Http\Requests\StoreFeedback
。我不知道为什么布尔验证,当我输入true
或false
时,它失败了,并将我重定向到欢迎页面。相反,我使用了
0
或1
,它接受参数并正常工作。fhg3lkii4#
如上所述,这是因为表单验证器发生,您也可以使用中间件修复此问题,首先创建一个中间件:
更新中间件的句柄方法
然后将此中间件添加到
app/Http/Kernel
kb5ga3dv5#
我遇到了同样的问题,但这是我的错。我没有添加正确的标题。
确保你指定了“内容类型”和“接受”。两者都应该设置为“application/json”。见下图。
希望这个有用。
Postman Headers
2j4z5cfb6#
我的解决方案,在请求中添加failedValidation函数