javascript - Axios 模拟适配器给出错误 'Error: Request failed with status code 404'

标签 javascript reactjs axios json-server axios-mock-adapter

我有一个组件,我在 mount 上进行 API 调用

import * as React from 'react';
import axios from 'axios';
import './index.scss';
// import {axiosInstance} from '../../mocks/index';

// axios(client)
// axiosInstance(axios);
const FeatureTable = () => {
   React.useEffect(() => {
    axios.get("http://localhost:8080/users").then(function (response: any) {
      console.log(response.data);
    });
  }, []);

  return (
    <div className="container">
  </div>
  )
}

export default FeatureTable;
我已经在这样的不同文件夹中设置了我的模拟适配器
const Axios = require("axios");
const MockAdapter = require("axios-mock-adapter");
import featureTable from './table';

export const axiosInstance = Axios.create();
const mock = new MockAdapter(axiosInstance, { delayResponse: 1000,  onNoMatch: "throwException"  });

featureTable(mock);
在我的表格文件中,我有这个代码 -
const users = [{ id: 1, name: "John Smith" }];


const featureTable = (mock: any) => {
  mock.onGet("http://localhost:8080/users").reply(200, users);
}

export default featureTable;

运行代码后,我得到 404 错误未找到。请帮助修复。 enter image description here

最佳答案

首先:你必须使用相同的axios两个地方的实例:设置模拟响应并进行实际调用。当我想模拟一些 API 时,我通常会在单独的文件中创建和导出 axios 实例,然后在需要的地方导入它。像这样:

// dataAPI.js
import axios from 'axios';

export const dataAPI = axios.create(); // general settings like baseURL can be set here
// FeatureTable.js
import React, { useEffect } from 'react';
import { dataAPI } from './dataAPI';

export const FeatureTable = () => {
  useEffect(() => {
    dataAPI.get('http://localhost:8080/users').then(something);
  }, []);

  return (<div>something</div>);
};
// mock.js
import { dataAPI } from './dataAPI';
import MockAdapter from 'axios-mock-adapter';
import { users } from './mockData.js'

const mock = new MockAdapter(dataAPI);
mock.onGet('http://localhost:8080/users').reply(200, users);
我要指出axios-response-mock作为axios-mock-adapter 的替代品.免责声明:我是该库的作者。我对 mock-adapter 感到有点沮丧,因为我没有发现 API 直观并且它有局限性(例如,不能将 URL 参数与 POST 请求一起匹配),并且默认情况下它不会让不匹配的请求通过。

关于javascript - Axios 模拟适配器给出错误 'Error: Request failed with status code 404',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66851504/

相关文章:

javascript - React - 选择复选框时渲染类组件

javascript - 为什么 select 的选定值会在动态下拉列表中发生变化?

JavaScript 通过正则表达式拆分字符串

javascript - jQuery Flip : Why is only my text turning and not . 卡片?

javascript - 切片无法正常工作 | react

node.js - Google Recaptcha 无法与 axios 一起使用

JavaScript,如何每 x 秒更改一次 div 标签的背景

javascript - setState 回调未按预期工作

express - VueJS 和 Express 通过 csrf token 进行发布

vue.js - 使用 axios 将文件发布到谷歌存储桶