reactjs 为什么RTK-Query总是返回originalStatus 200?

kxxlusnw  于 2023-04-11  发布在  React
关注(0)|答案(1)|浏览(125)

在我的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的数据。

dbf7pr2w

dbf7pr2w1#

它连接到http://localhost:3000/user,并返回状态200和一些HTML内容。
然后它无法解析HTML内容,并给你一个解析错误,在你的屏幕截图中有originalStatus: 200-这是它从服务器获得的HTTP状态。
为什么你会期望它突然变成404?这是从哪里来的?它只知道它得到一个不是JSON的字符串。
一般来说,如何“解决”这个问题:检查服务器代码,使其返回实际的404 -这似乎不是RTK查询问题。

相关问题