我正在尝试使用邮递员测试我的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
答案 0 :(得分:4)
问题出在您的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先生所说的。我不知道为什么要进行布尔验证,当我输入true
或false
时,它失败并重定向到欢迎页面。
相反,我使用了0
或1
,它可以接受参数并且可以正常工作。