我现在尝试了好几个小时,从 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
使用在模板中导入的 axios 并作为 nuxt 模块
来自构建和生产版本的请求
异步和同步方法
重现步骤:
# Download and start API server
git clone https://github.com/consuman/api-demo.git
cd api-demo/
npm install
node src
不负相思意
红颜莎娜
largeQ
慕村9548890
相关分类