Axios가 있는 larabel 컨트롤러에서 캡처 오류
①Axios를 사용하여 Larabel 컨트롤러의 메토스에서 에러를 캡처하려면 어떻게 해야 합니까?문제는 다음과 같습니다. 데이터가 Larabel의 UserController에 있는 myProfile 메서드의 검증자를 통과하고 올바른 경우 메서드에서 json 응답이 생성되고 Axios가 이를 받아들여 Toast Success 메시지를 표시하지만 오류가 발생하거나 빈 데이터를 validor에 전달하면 Axios는 t를 수신하지 않습니다.에러와 함께 빈 토스트를 표시하고 콘솔에 에러 422를 생성합니다.
사용자 컨트롤러의 myProfile
public function myProfile(Request $request)
{
$valido = $this->validate($request, [
'firstname' => 'required|min:3|max:15',
'lastname' => 'min:2|max:15',
'gender' => 'numeric',
'description' => 'max:200',
]);
if($valido){
return response()->json([
'status' => 'success',
'msg' => 'Ok',
], 201);
}
else{
return response()->json([
'status' => 'error',
'msg' => 'Error',
], 422);
}
}
Profile.vue (Axios 섹션)
updateUser(){
const value = {
'id': this.user.id,
'firstname': this.user.firstname,
'lastname': this.user.lastname,
'gender': this.user.gender,
'description': this.user.description,
}
axios.put('/dashboard/profile', value)
.then((response) => {
let title = response.data.status;
let body = response.data.msg;
this.displayNotificationSuccess(title, body);
})
.catch((error) => {
let title = error.response.data.status;
let body = error.response.data.msg;
this.displayNotificationError(title,body);
})
}
Axios가 json Success fron 컨트롤러를 캡처할 때의 스크린샷
Axios가 컨트롤러에서 json 오류를 캡처하지 않은 경우의 스크린샷
json 오류로 인해 콘솔에서 스크린샷이 생성되었지만 악시에 의해 캡처되지 않음
③그 문제를 어떻게 해결할 수 있을까?Larabel 5.6, Vuejs 2 및 Axios를 사용했습니다.
를 감싸면validate()
메서드 호출try/catch
블록, 그 다음에, 당신은 그것을 잡을 수 있습니다.ValidationException
유효하지 않은 경우 느려집니다.이렇게 하면 사용자가 직접 응답을 반환할 수 있습니다.
프런트 엔드로 출력하고 싶은 경우는, 이하의 예와 검증 에러도 기재했습니다.
<?php
use Illuminate\Validation\ValidationException;
public function myProfile(Request $request)
{
try {
$this->validate($request, [
'firstname' => 'required|min:3|max:15',
'lastname' => 'min:2|max:15',
'gender' => 'numeric',
'description' => 'max:200',
]);
return response()->json([
'status' => 'success',
'msg' => 'Okay',
], 201);
}
catch (ValidationException $exception) {
return response()->json([
'status' => 'error',
'msg' => 'Error',
'errors' => $exception->errors(),
], 422);
}
}
언급URL : https://stackoverflow.com/questions/49848519/capture-error-from-laravel-controller-with-axios
'programing' 카테고리의 다른 글
System.nanoTime()은 전혀 쓸모가 없습니까? (0) | 2022.07.19 |
---|---|
태그 href에 2개의 값을 바인딩하는 Vue Js (0) | 2022.07.19 |
Json Mapping Exception:형식 [simple type, class]에 적합한 생성자를 찾을 수 없습니다. JSON 개체에서 인스턴스화할 수 없습니다. (0) | 2022.07.19 |
C에서 char를 정수로 변환하는 방법 (0) | 2022.07.19 |
vue.js의 클릭 이벤트를 사용하여 계산된 함수를 방해하지 않고 데이터 테이블에서 행을 삭제하는 방법 (0) | 2022.07.19 |