为什么 RTK-Query 总是 return originalStatus 200?
Why RTK-Query always return originalStatus 200?
我的 localhost:3000 上没有后端,我希望我的所有请求都会 return 错误 404。但是 RTK-Query 总是 return 是这样的:
{
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 数据。请帮我解决一下
它连接到 http://localhost:3000/user
并且 returns 状态为 200 和一些 HTML 内容。
然后它无法解析 HTML 内容并给你一个解析错误,originalStatus: 200
- 这是它从服务器获得的 HTTP 状态 - 在你的屏幕截图中。
为什么会突然变成 404?那会从哪里来?它所知道的是它得到一个不是 JSON.
的字符串
一般来说,关于如何“解决”这个问题:检查您的服务器代码,使其 returns 成为实际的 404 - 这似乎不是 RTK 查询问题。
我的 localhost:3000 上没有后端,我希望我的所有请求都会 return 错误 404。但是 RTK-Query 总是 return 是这样的:
{
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 数据。请帮我解决一下
它连接到 http://localhost:3000/user
并且 returns 状态为 200 和一些 HTML 内容。
然后它无法解析 HTML 内容并给你一个解析错误,originalStatus: 200
- 这是它从服务器获得的 HTTP 状态 - 在你的屏幕截图中。
为什么会突然变成 404?那会从哪里来?它所知道的是它得到一个不是 JSON.
的字符串一般来说,关于如何“解决”这个问题:检查您的服务器代码,使其 returns 成为实际的 404 - 这似乎不是 RTK 查询问题。