为什么 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 查询问题。