嗨,我正在为后端使用Laravel API,并在React中使用Redux进行登录。嗯,我调用API,我希望laravel API传递正在发生的事情的精确错误,例如用户不存在。问题是当我想在使用axios进行的调用的catch部分访问Mesage时
Laravel登录部分
public function login(Request $request){
$loginData = $request->validate([
'name' => 'required',
'password' => 'required'
]);
if (!auth()->attempt($loginData)) {
return response(["message" => "I want to acces this message in the catch part of Axios"], 401);
}
$accessToken = auth()->user()->createToken('authToken')->accessToken;
return response(['user' => auth()->user(), 'access_token' => $accessToken]);
}
使用axios响应调用
Axios({
method: 'post',
url: '/login',
data: {
name: name,
password: password,
}
}).then(function (response) {
dispatch(authSuccess(response.data.access_token, response.data.user.id));
})
.catch(function (response) {
console.log(response)
});
我在网络控制台中得到的响应
xhr.js:177邮政http://127.0.0.1:8000/api/login401(未经授权)
我想获得我在Laravel API中传递的消息(“我想在Axios的catch部分访问此消息”)
您可以在此处使用从服务器接收到的错误对象,这是获取进一步流程错误对象的示例代码:
Axios({
method: 'post',
url: '/login',
data: {
name: name,
password: password,
}
}).then(function (response) {
dispatch(authSuccess(response.data.access_token, response.data.user.id));
})
.catch(err => {
if (err.response) {
// client received an error response (5xx, 4xx)
} else if (err.request) {
// client never received a response, or request never left
} else {
// anything else
}
})
在您的控制器中尝试这样返回响应
public function login(Request $request){
$loginData = $request->validate([
'name' => 'required',
'password' => 'required'
]);
if (!auth()->attempt($loginData)) {
return response()->json([
'status' => 'error',
'message' => 'I want to acces this message in the catch part of Axios',
], 401);
}
$accessToken = auth()->user()->createToken('authToken')->accessToken;
return response(['user' => auth()->user(), 'access_token' => $accessToken]);
}
在axios中捕捉错误
.catch((error) => {
// console.log(error.response.data.status);
console.log(error.response.data.message);
})
我无法用axios捕捉错误响应。怎么做?我用的是: 我看到ajax请求的结果有400个状态代码,响应主体看起来像(Django后端)。没关系,我已经准备好在catch处理程序中处理这些错误了。 但是它们转到成功处理程序。为何如此?我在控制台中看到以下输出: 成功处理程序接收axios错误对象作为结果。为什么会这样,下一步该怎么办?此错误对象不包含任何有用信息。 UPD。实际上,错误对象包含有用的信
我正在从后端代码发送状态代码422,其中包含错误描述的响应正文。我使用axios post发布请求,如下所示: 问题是,当后端返回错误代码422时,我捕获的错误对象没有关于响应体的信息。有什么方法可以检索错误文本吗?
我在我的反应应用程序中有一个axios请求,为此我遵循axios npm文档。 这是我的axios请求 我能够成功记录成功请求的数据。但是,当我故意产生一个错误并尝试将其记录到console.log中时,我不会将结果记录下来,我只是看到了 邮递http://localhost:3000/login 401(未经授权):3000/登录:1 错误:请求失败,状态代码401 login.js:66 在c
我正在使用以下代码向Laravel发布一些内容: (不相关代码省略) 当Laravel返回200时,这总体上是有效的。如果我从Laravel Axios返回401、422或其他东西,会在控制台中抛出一个错误,整个方法将停止运行。 我一直认为这是一种非常不利于开发人员的行为——我不明白吗?从后端API返回不同的状态代码应该有助于读取Vue中的响应,但Vue/Axios将每个非200响应视为致命错误。
我对CompletableFuture是个新手,我想调用一个可以引发异常的方法MetadataLoginutil::Login。然而,下面的代码没有编译,尽管我已经‘异常’编写。它说我必须在try&catch中包装metadataloginutil::login'。 请指教。前面谢谢!
我目前正在使用Jmeter测试API的响应时间。让我们称之为API A。如果API A调用API B,而API B托管在同一台服务器上,但端口不同,那么我有没有办法使用JMeter捕获API B的响应时间呢? 我意识到这里有一个类似的问题,试图完成同样的事情,但它对我不起作用。我看不到对API B的内部调用。