从Nuxt.js到外部API的axios发布请求问题

问题描述 投票:0回答:1

我现在已经尝试了许多小时,以便通过Nuxt向我的外部api发送简单的发布请求。

它可以从单独的节点实例]中正常工作,我可以根据需要使用以下命令进行POST和GET:

const headers = {
  'Content-Type': 'application/json',
  'access-token': 'myTokenXYZ123'
};
const data = { test: 'Hello!' };

const postSomething = () => {
  axios.post('https://myapidomain.com/api', data, {
    headers: headers
  });
};
postSomething();

还带有curl

curl -X POST -H 'access-token: myTokenXYZ123' -H 'Content-Type: application/json' -d '{ "test": "Hello!" }' https://myapidomain.com/api

到目前为止很好,现在我想在我的Nuxt项目中实现它。我必须首先设置一个http代理,就像在nuxt.config.js中所做的那样:

[...]

modules: [
    '@nuxtjs/axios',
    '@nuxtjs/proxy'
  ],
  proxy: {
    '/my-api/': { target: 'https://myapidomain.com/api', pathRewrite: {'^/my-api/': ''} },
  },
  axios: {
    proxy: true
  },

[...]

我非常有信心代理可以正常工作,因为我可以通过以下方法获取数据:

methods: {
  async getSomething() {
    let requested = await this.$axios.get('/my-api/', {
       headers: this.headers
    });
    return requested.data;
  }
}

但是无论我做什么,POST请求都不起作用。这是我尝试过的方法:

methods: {
  postSomething() {
    const data = { test: 'Hello!' };

    this.$axios.post('/my-api/', data, {
      headers: {
        'Content-Type': 'application/json',
        'access-token': 'myTokenXYZ123'
      }
    });
  }
}

我尝试了各种不同的格式,例如像这样:

methods: {
  postSomething() {
    const headers = {
      'Content-Type': 'application/json',
      'access-token': 'myTokenXYZ123'
    };
    const data = { test: 'Hello!' };
    const options = {
      method: 'post',
      url: '/my-api/',
      data: data,
      transformRequest: [(data, headers) => {
        return data;
      }]
    };
    this.$axios(options);
  }
}

但是它似乎不起作用。请求正在运行,并在一段时间后中止,并在终端中出现以下错误:

ERROR  [HPM] Error occurred while trying to proxy request  from localhost:3000 to https://myapidomain.com/api (ECONNRESET) (https://nodejs.org/api/errors.html#errors_common_system_errors)

我已经尝试过的其他几件事:

  • 本地运行API和Nuxt

  • 使用在模板中作为nuxt模块导入的axios

  • 来自构建版本和生产版本的请求

  • 异步和同步方法

  • 谢谢您的阅读。任何提示将不胜感激!

我现在已经尝试了许多小时,以便通过Nuxt向我的外部api发送简单的发布请求。它可以从单独的节点实例按预期工作,我可以根据需要使用以下命令进行POST和GET:...

javascript node.js axios http-post nuxt.js
1个回答
0
投票

希望您正在使用@nuxtjs/axios模块,如果可以使用拦截器

© www.soinside.com 2019 - 2024. All rights reserved.