Node.js 从节点HTTP请求到外部API删除端口号
我正在使用Node、Express和Webpack编写一个React应用程序。我的问题是,我的API调用的URL在主机和路径之间总是有一个端口号。似乎这个主题上的大多数问题更多地与路由有关,而不是与外部API调用有关 我对请求比较满意,但我在尝试让它与Webpack很好地配合时感到非常沮丧,所以我转向了我所知较少的Node的http 以下是负责API调用的方法:Node.js 从节点HTTP请求到外部API删除端口号,node.js,http,express,reactjs,webpack,Node.js,Http,Express,Reactjs,Webpack,我正在使用Node、Express和Webpack编写一个React应用程序。我的问题是,我的API调用的URL在主机和路径之间总是有一个端口号。似乎这个主题上的大多数问题更多地与路由有关,而不是与外部API调用有关 我对请求比较满意,但我在尝试让它与Webpack很好地配合时感到非常沮丧,所以我转向了我所知较少的Node的http 以下是负责API调用的方法: getData() { const self = this; const url = "api.civicapps.
getData() {
const self = this;
const url = "api.civicapps.org";
const options = {
"method": "GET",
"mode": "no-cors",
"host": url,
"path": "/restaurant-inspections/?restaurant_name=" + this.state.nameQuery,
"port": 8080,
"headers": {
"Access-Control-Allow-Origin": "http://localhost:3000"
}
}
const p1 = new Promise(function(resolve, reject) {
resolve(
http.request(options, function(res) {
res.setEncoding('utf8');
const body = {};
//This is clearly not ideal, but all I need right now is to get a response from the API
res.on('data', function(chunk) {
body.push(chunk);
});
return body;
}).end()
)
});
p1.then(function(data) {
console.log(data);
self.setState({
name: data.body
});
});
p1.catch(function(err) {
...
});
}
我只想做一个对这个API的简单测试GET请求。一旦成功了,我就没事了
提前感谢。事实证明,将端口设置为80并使用sudo运行解决了问题。事实证明,将端口设置为80并使用sudo运行解决了问题。我知道这个话题很古老,但我认为在Docker环境中分享类似问题的经验很好 由于我在节点容器中将服务作为主机名调用,因此我不希望在服务名称之后设置端口(例如:
http://my-api-service/v1/users
被称为http://my-api-service/v1/users:80
)
我没有伸手去弄清楚,所以我用了。它有自己的定义类型,可以这样使用:
import Axios, { AxiosRequestConfig } from 'axios';
...
const options: AxiosRequestConfig = {
headers: { 'Authorization': 'Bearer ' + token, 'Accept': 'application/ld+json' }
};
Axios.get('http://my-api-service/v1/users', options)
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.error("Error: " + error.message);
})
.then(() => {
// always executed
// ...
});
这是我发现的在Docker环境中解决此类错误的唯一方法。我知道这个主题已经过时了,但我认为在Docker环境中分享类似问题的经验是很好的 由于我在节点容器中将服务作为主机名调用,因此我不希望在服务名称之后设置端口(例如:
http://my-api-service/v1/users
被称为http://my-api-service/v1/users:80
)
我没有伸手去弄清楚,所以我用了。它有自己的定义类型,可以这样使用:
import Axios, { AxiosRequestConfig } from 'axios';
...
const options: AxiosRequestConfig = {
headers: { 'Authorization': 'Bearer ' + token, 'Accept': 'application/ld+json' }
};
Axios.get('http://my-api-service/v1/users', options)
.then((response) => {
console.log(response.data);
})
.catch((error) => {
console.error("Error: " + error.message);
})
.then(() => {
// always executed
// ...
});
这是我发现的在停靠环境中解决此类错误的唯一方法。您指的是哪个端口?您在请求中包含了一个端口(
8080
),您指的是哪个端口?您在请求中包含了一个端口(8080
)。