Отправка вызовов API с помощью ax ios не удалась - PullRequest
0 голосов
/ 07 января 2020

Я новичок в React Redux и Redux-logi c ... Я получаю эту ошибку при попытке отправить запрос PUT ... Я также использую Ducks и мой код (службы). 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), но это дает BAD-запрос. Где мне внести изменения в мой код?

1 Ответ

0 голосов
/ 07 января 2020

В шапке вы говорите, что используете топор ios, но это не так. Вместо этого вы используете HTTPClient.

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

Дополнительные примеры здесь

...