Axios请求失败,状态码为429,但与Postman一起使用

时间:2019-01-18 12:39:21

标签: node.js api request axios postman

我正在尝试使用axios访问此API,但出现错误 状态: 429 [请求过多] 。 我只发送了一个仍然出错的请求。

但是,当我尝试使用邮递员访问此URL时,它仍然有效。

axios
  .post(
    `https://www.expedia.com/Hotel-Search-Data?responsive=true&destination=New+York%2C+New+York&latLong=40.75668%2C-73.98647&regionId=178293&startDate=01%2F20%2F2019&endDate=01%2F21%2F2019&rooms=1&adults=2&timezoneOffset=19800000&langid=1033&hsrIdentifier=HSR&page=7`
  )
  .then(result => {
    console.log(result.data);
  })
  .catch(err => {
    console.log(err);
  });

2 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,这是因为请求过多。

您可能正在某个循环内运行上述行,这导致此发生,因为Axios同时触发所有请求。

解决方法是等待,就像这样

get()

请注意,上面的代码必须位于异步函数中。

答案 1 :(得分:0)

使用retry-axios

const axios = require('axios');
const retry = require('retry-axios');

const params = {
  responsive: true,
  destination: 'New+York%2C+New+York',
  latLong: '40.75668%2C-73.98647',
  regionId: 178293, 
  startDate: '01%2F20%2F2019', 
  endDate: '01%2F21%2F2019',  rooms: 1, 
  adults: 2,
  timezoneOffset: 19800000,
  langid: 1033,
  hsrIdentifier: 'HSR',
  page: 7
}

const raxConfig = {
  backoffType: 'exponential',
  onRetryAttempt: (err) => {
    const cfg = rax.getConfig(err);
    const status = err.response.status;
    console.log(`? [${status}] Retry attempt #${cfg.currentRetryAttempt}`);
  }
}

axios
  .post(
    'https://www.expedia.com/Hotel-Search-Data',
    {},
    {
      params,
      raxConfig,
    }
  )
  .then(result => {
    console.log(result.data);
  })
  .catch(err => {
    console.log(err);
  });