在我的localhost:3000上没有后端,我希望我所有的请求都会返回错误404。但是RTK-Query总是返回这个:
{
data: "<!DOCTYPE html>\n<html lang=\"ru\">\n <head>\n <meta c..."
error: "SyntaxError: Unexpected token < in JSON at position 0"
originalStatus: 200
status: "PARSING_ERROR"
}
数据包含根页html,originalStatus总是200. Screen
我的API.ts:
import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react'
import getCookie from '../../utils/get-cookie'
export const api = createApi({
baseQuery: fetchBaseQuery({
baseUrl: '/',
prepareHeaders: (headers) => {
const token = getCookie('csrftoken')
if (token) {
headers.set('X-CSRFToken', token)
}
return headers
},
}),
endpoints: () => ({}),
})
我的getUserEndpoint.ts:
import { api } from './api'
import { IUserInitialState } from '@types'
interface IGetUserResponse {
...some types
}
const getUserEndpoint = api.injectEndpoints({
endpoints: (build) => ({
getUser: build.query<IGetUserResponse, void>({
query: () => ({
url: 'user/',
}),
}),
}),
})
export const {
useGetUserQuery,
endpoints: { getUser },
} = getUserEndpoint
在App.ts中,我使用hook:
const {
data,
isError: isGetUserError,
error: getUserError,
isFetching: isFetchingUser,
} = useGetUserQuery()
结果我期望originalStatus 404,因为在我的本地机器上没有连接到任何服务器,但是我总是得到originalStatus 200和根页面html的数据。
1条答案
按热度按时间dbf7pr2w1#
它连接到
http://localhost:3000/user
,并返回状态200和一些HTML内容。然后它无法解析HTML内容,并给你一个解析错误,在你的屏幕截图中有
originalStatus: 200
-这是它从服务器获得的HTTP状态。为什么你会期望它突然变成404?这是从哪里来的?它只知道它得到一个不是JSON的字符串。
一般来说,如何“解决”这个问题:检查服务器代码,使其返回实际的404 -这似乎不是RTK查询问题。