From a4f5080c6dc8c3fc7f76aebb13cbf54c0ed7ef15 Mon Sep 17 00:00:00 2001 From: crupest Date: Wed, 27 Apr 2022 20:57:41 +0800 Subject: ... --- FrontEnd/src/http/common.ts | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) (limited to 'FrontEnd/src/http/common.ts') diff --git a/FrontEnd/src/http/common.ts b/FrontEnd/src/http/common.ts index 25c69012..b7d579c7 100644 --- a/FrontEnd/src/http/common.ts +++ b/FrontEnd/src/http/common.ts @@ -27,6 +27,12 @@ export class HttpNotFoundError extends Error { } } +export class HttpBadRequestError extends Error { + constructor(public innerError?: AxiosError) { + super(); + } +} + function convertNetworkError(error: AxiosError): never { if (error.isAxiosError && error.response == null) { throw new HttpNetworkError(error); @@ -56,10 +62,20 @@ function convertNotFoundError(error: AxiosError): never { } } +function convertBadRequestError(error: AxiosError): never { + const statusCode = error.response?.status; + if (statusCode === 422) { + throw new HttpBadRequestError(error); + } else { + throw error; + } +} + export function configureAxios(axios: Axios): void { axios.interceptors.response.use(identity, convertNetworkError); axios.interceptors.response.use(identity, convertForbiddenError); axios.interceptors.response.use(identity, convertNotFoundError); + axios.interceptors.response.use(identity, convertBadRequestError); } configureAxios(axios); -- cgit v1.2.3