AX IOS: Могу ли я отправить более одного элемента данных в API в запросе POST? - PullRequest
0 голосов
/ 13 июля 2020

Итак, у меня есть форма, которая собирает данные и отправляется в API с помощью myForm = new FormData (). Однако один из элементов, заполняемых в модели, имеет несколько атрибутов в модели MongoDB. Поскольку форма должна иметь отношения пары ключей 1 к 1, я не могу отправить ее как объект. Итак, в качестве решения я создаю объект в своем контроллере и хочу отправить его с другими ошибками c. данные формы (объект startLocation в приведенном ниже коде).

Глядя конкретно на приведенный ниже код, я подумал, что смогу сделать это, используя data: myForm, startLocation , но, к сожалению, , это не работает. Есть хороший способ сделать это? Я просто лажаю с синтаксисом?

import axios from 'axios';
import { showAlert } from './alerts';

export const createTour = async myForm => {
  try {
    const startLocation = {
      type: 'Point',
      coordinates: [-80.185942, 25.774772],
      address: '47 Bowman Lane, Kings Park, NY 11754',
      description: 'New York'
    };

    const res = await axios({
      method: 'POST',
      /* headers: {
        'Content-Type': `multipart/form-data; boundary=${myForm._boundary}`
      }, */
      url: 'http://127.0.0.1:8000/api/v1/tours',
      data: myForm
    });

    if (res.data.status === 'success') {
      showAlert('success', 'NEW TOUR CREATED!');
      window.setTimeout(() => {
        location.assign('/');
      }, 1500);
    }
  } catch (err) {
    showAlert('error', err.response.data.message);
  }
};

1 Ответ

1 голос
/ 14 июля 2020

Пример из ax ios, data должен быть объектом JSON:

// Send a POST request
axios({
  method: 'post',
  url: '/user/12345',
  data: {
    firstName: 'Fred',
    lastName: 'Flintstone'
  }
});

В вашем случае попробуйте следующее:

    const res = await axios({
      method: 'POST',
      /* headers: {
        'Content-Type': `multipart/form-data; boundary=${myForm._boundary}`
      }, */
      url: 'http://127.0.0.1:8000/api/v1/tours',
      data:{
         form: myForm,
         location: startLocation
      }
    });

Тогда вы должны иметь возможность получать как данные формы, так и данные о местоположении на вашем сервере.

Ссылка: Ax ios API

...