繁体   English   中英

axios GET 请求与 React JS 中的表单数据

[英]axios GET request with form data in React JS

我想使用 axios 在反应 js 中实现以下 cURL 请求(正在工作):

curl -k --request GET "BASE_URL_SERVER/sendText" --form "user_id="uidxxxx"" --form "sign_id="

我总是得到同样的错误: field sign_id not found ,但从技术上讲,我正在发送它,所以我有点绝望。

var data = new FormData();
data.append('user_id', 'uidxxxx');
data.append('sign_id', '9');

const api = axios.create({
    baseURL: BASE_URL_SERVER,
    data: data,
    headers: {
        'Content-Type': `multipart/form-data; boundary=${data._boundary}`
    },
    timeout: 10000,
})

api.get('/sendText')
    .then(response => console.log(JSON.stringify(response.data)))
    .catch(error => { console.log(error) })

我也尝试在标题部分添加“...getHeaders()”,但 React 说它不是 function; 我在其他帖子中读到它与浏览器有关

提前致谢

ps: 是一个非常相似的问题,但没有一个解决方案对我有用


[更新] 我最终用 POST 来实现它,这更适合发布表单数据; 不需要标题,浏览器会自动添加它们:

var data = new FormData();
data.append('user_id', user_id);
data.append('sign_id', sign_id);

const api = axios.create({
    baseURL: BASE_URL_SERVER,
    timeout: TIMEOUT_SERVER,
})

api.post('/sendText', data)
    .then(response => console.log(JSON.stringify(response.data)))
    .catch(error => { console.log(error) })

您有一个错误,您尝试通过 axios 发送数据进行 POST 并且方法是 GET...

因此,您需要将方法更改为 POST 以发布表单数据,或者您需要将其更改为 url 参数或 url 路径基于您的 Z8A5DA52ED126447D359E70C0aAZ GET 为...

基于您的 curl,您的情况是您需要一个 GET:

// Make a request for a user with a given ID
axios.get('/sendText?ID=12345')
  .then(function (response) {
    // handle success
    console.log(response);
  })
  .catch(function (error) {
    // handle error
    console.log(error);
  })
  .then(function () {
    // always executed
  });

// Optionally the request above could also be done as
axios.get('/user', {
    params: {
      sendText: 12345
    }
  })
  .then(function (response) {
    console.log(response);
  })
  .catch(function (error) {
    console.log(error);
  })
  .then(function () {
    // always executed
  });  

此外,您可以将所有配置保存在实例中,并为所有嵌套共享它一次又一次地编写它.. 例如:

// Common Axios Instance Config
const axiosConfig = {
  baseURL: process.env.REACT_APP_API_ENDPOINT,
};

// Create Default Axios Instace
const instance = axios.create(axiosConfig);
 

我认为根据您的示例,这将起作用,但不确定正弦我没有对其进行测试..:

var data = new FormData();
data.append('user_id', 'uidxxxx');
data.append('sign_id', '9');

const api = axios.create({
    baseURL: 'https://193.146.38.4:56076',
    headers: {
        'Content-Type': `multipart/form-data; boundary=${data._boundary}`
    },
    timeout: 10000,
})

    api.get('/sendText', {
user_id: 111,
sign_id: 2222
)
        .then(response => console.log(JSON.stringify(response.data)))
        .catch(error => { console.log(error) })

有关更多详细信息,请查看此 url

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM