You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在RTK Query中将404错误视为成功响应?

解决方案

当然可以实现,你可以通过两种方式让Redux-Toolkit把该端点的404错误视为成功响应并返回空数组:

方法一:通过validateStatus标记404为成功状态,再转换响应

这种方式让RTK Query直接把404判定为合法的成功响应,之后在响应转换逻辑里返回空数组,是最推荐的方案:

import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react';

const yourApi = createApi({
  baseQuery: fetchBaseQuery({
    baseUrl: '你的基础API地址',
    // 自定义状态码校验规则:200和404都视为成功
    validateStatus: (status) => status === 200 || status === 404,
  }),
  endpoints: (builder) => ({
    getTargetData: builder.query({
      query: () => '你的目标端点路径',
      // 转换响应:如果是404状态,返回空数组;否则返回原响应
      transformResponse: (response, meta) => {
        if (meta?.response?.status === 404) {
          return [];
        }
        return response;
      },
    }),
  }),
});

方法二:在transformErrorResponse中处理404错误

如果你不想修改全局的状态码校验规则,也可以在错误转换逻辑里捕获404并返回空数组,但需要注意:这种方式下RTK Query依然会将其标记为错误状态,你需要在组件或业务逻辑中额外处理这个"特殊错误":

transformErrorResponse: (error, meta) => {
  console.log('fetch error', error);
  // 判断是否是404错误
  if (meta?.response?.status === 404) {
    // 返回空数组作为错误数据
    return [];
  }
  // 其他错误保持原逻辑返回
  return error;
},

之后在使用该查询的组件中,你可以这样处理:

const { data, error } = useGetTargetDataQuery();
// 如果是404对应的错误,用空数组替代
const finalData = data || (error === [] ? [] : null);

不过更推荐第一种方法,因为它能让404完全走成功响应的逻辑,不需要额外处理错误状态。

内容的提问来源于stack exchange,提问作者Walter Monecke

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 11:12:45