JS Fetch - 无法从 BadRequest 响应中获取数据

dav*_*vez 5 javascript ecmascript-6 reactjs es6-promise redux

我在客户端使用 React + Redux,后端在 NET CORE 中。客户端使用以下 API 从 API 获取数据:

        return fetch(`api/login`, requestOptions)
        .then(response => {
            if(!response.ok) {
                return Promise.reject(response.json() as Promise<AuthError>);
            } else {
                return response.json() as Promise<ILoginResponse>
            }
        })
Run Code Online (Sandbox Code Playgroud)

请求选项有:

        const requestOptions = {
        method: 'POST',
        headers: {
            'Accept': 'application/json', 
            'Content-Type': 'application/json' },
        body: JSON.stringify({ username, password })
        };
Run Code Online (Sandbox Code Playgroud)

当密码错误时,服务器返回

404 Bad request
Run Code Online (Sandbox Code Playgroud)

身体是:

{"errorCode":2,"description":"Invalid Password"}
Run Code Online (Sandbox Code Playgroud)

我想读取正文,但使用这段代码是不可能的,因为这response.json() as Promise<AuthError>会产生一个空对象。有没有办法读取错误请求响应的正文?

小智 -1

您是否尝试过使用catch然后检查错误对象?

...
.then(response => response.json())
.then(response => console.log('Success:', JSON.stringify(response)))
.catch(error => console.dir(error));
Run Code Online (Sandbox Code Playgroud)