【问题标题】:Sending API calls using axios is not successful使用 axios 发送 API 调用不成功
【发布时间】:2023-03-16 22:04:01
【问题描述】:

我是 React Redux 和 Redux-logic 的初学者...尝试发送 PUT 请求时出现此错误...我也在使用 Ducks,我的代码 (services.js) 为关注..

import { createLogic } from "redux-logic";
import actions from "./actions";
import types from "./types";
import endPoints from "../../../util/EndPoints";
import * as API from "../../../util/HTTPClient";

const addRegion = createLogic({
  type: types.ADD_REGION,
  latest: true,
  debounce: 1000,

  processOptions: {
    dispatchReturn: true,
    successType: types.ADD_REGION_SUCCESS,
    failType: types.ADD_REGION_FAILED
  },

  process({ MockHTTPClient, getState, action }, dispatch, done) {
    let HTTPClient;
    if (MockHTTPClient) {
      HTTPClient = MockHTTPClient;
    } else {
      HTTPClient = API;
    }
    let object = action.payload;

    HTTPClient.Post(endPoints.ADD_REGIONS, object)
      .then(resp => {
        dispatch(actions.addRegionSuccess(resp.data));
        console.log(resp.data);
      })
      .catch(err => {
        let errorMessage;
        if (err.response && err.response.status == 400) {
          // errorMessage = err.response && err.response.data.error.message;
          errorMessage = err.response && err.response.data.errormessage;
        }
        dispatch(
          actions.addRegionFailed({
            title: "Error!",
            message: errorMessage
            // message: "errorMessage"
          })
        );
      })
      .then(() => done());
  }
});

const getRegion = createLogic({
  type: types.GET_REGION,
  latest: true,
  debounce: 1000,

  process({ MockHTTPClient, getState, action }, dispatch, done) {
    let HTTPClient;
    if (MockHTTPClient) {
      HTTPClient = MockHTTPClient;
    } else {
      HTTPClient = API;
    }

    let object = action.payload;

    HTTPClient.Get(endPoints.GET_REGIONS, object)
      .then(resp => {
        dispatch(actions.getRegionSuccess(resp.data));
      })
      .catch(err => {
        dispatch(
          actions.getRegionFailed({
            title: "Error!",
            message: err
          })
        );
      })
      .then(() => done());
  }
});

const editRegion = createLogic({
  type: types.EDIT_REGION,
  latest: true,
  debounce: 1000,

  process({ MockHTTPClient, getState, action }, dispatch, done) {
    let HTTPClient;
    if (MockHTTPClient) {
      HTTPClient = MockHTTPClient;
    } else {
      HTTPClient = API;
    }

    // let object = action.payload;
    let selectedRegion = action.payload;
    HTTPClient.Put(endPoints.EDIT_REGIONS, selectedRegion)

      .then(resp => resp.data)
      .then(data => dispatch(actions.editRegionSuccess(data)))

      .catch(err => {
        //console.log("TCL: process -> err", err);
        var errorMessage;
        if (err.response && err.response.status == 400) {
          errorMessage = err.response && err.response.data.error.message;
        }
        dispatch(
          actions.editRegionFailed({
            title: "Error!",
            //message: errorMessage
            message: err
          })
        );
      })
      .then(() => done());
  }
});

export default [addRegion, getRegion, editRegion];

我正在尝试将一些数据发送到后端 api(使用 PUT 请求),但它表明这是一个错误的请求。 我应该在哪里更改我的代码?

【问题讨论】:

    标签: reactjs react-redux redux-logic


    【解决方案1】:

    在标题中你说你正在使用 axios 但你没有。相反,您使用的是 HTTPClient。

    const axios = require('axios');
    axios.put(endPoints.EDIT_REGIONS, selectedRegion)
    

    更多例子here

    【讨论】:

      猜你喜欢
      • 2020-02-15
      • 1970-01-01
      • 2021-02-13
      • 1970-01-01
      • 2021-10-07
      • 2019-05-29
      • 1970-01-01
      • 1970-01-01
      • 2021-10-30
      相关资源
      最近更新 更多