在应用程序中发出 GET 请求时 ECONNREFUSED,但 API returns JSON 成功
ECONNREFUSED when making GET request in app, but API returns JSON successfully
我正在用 React 编写一个节点应用程序,使用 node-postgres 和 superagent 进行后端调用。
假设我正在发出 GET 请求并使用 JSON 它 returns 来填充 table 学生。我的 API 看起来像这样:
import pg from 'pg';
import Router from 'express';
let router = new Router();
let conString = "postgres://user:pass@localhost/db_name";
router.get('/getStudents', function(req, res) {
var results = [];
pg.connect(conString, function(err, client, done) {
if (err) {
done();
console.log(err);
return res.status(500).json({success: false, data: err});
}
var query = client.query('SELECT first_name, last_name, email FROM students');
query.on('row', function(row) {
results.push(row);
});
query.on('end', function() {
done();
return res.json(results);
});
});
});
在页面加载时,从商店调用它来设置学生数组。好像这里出了点问题:
var request = require('super agent');
function getStudents() {
request
.get('/api/getStudents')
.set('Accept', 'application/json')
.end(function(err, res) {
if (err) {
console.log("There's been an error: getting students.");
console.log(err);
} else {
return res;
}
});
}
如果我卷曲 localhost:3000/api/getStudents
,我会得到我期望的 JSON 响应。
但是,当我在页面加载时调用它时,出现 ECONNREFUSED 错误:
Error: connect ECONNREFUSED 127.0.0.1:80]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 80,
response: undefined
不确定为什么我在 HTTP 端口上收到错误。这是我第一次使用 node-postgres、superagent 和 React,因此非常感谢您的帮助。
编辑: 忘记提及我能够发出 POST 请求并将项目插入数据库而不会出现任何错误。此错误仅在我尝试 GET 请求时发生。
在 get
方法中试试这个(插入完整路径 url):
request
.get('http://localhost:3000/api/getStudents')
.set('Accept', 'application/json')
.end(function(err, res) {
if (err) {
console.log("There's been an error: getting students.");
console.log(err);
} else {
return res;
}
});
查看 CORS 文档以获取使用绝对 urls:
的示例
如果您的请求中没有协议,也会出现该错误URL。
改为
request.get('www.myexample.com/api/getStudents')
做
request.get('https://www.myexample.com/api/getStudents')
^^^^^^^^
我正在用 React 编写一个节点应用程序,使用 node-postgres 和 superagent 进行后端调用。 假设我正在发出 GET 请求并使用 JSON 它 returns 来填充 table 学生。我的 API 看起来像这样:
import pg from 'pg';
import Router from 'express';
let router = new Router();
let conString = "postgres://user:pass@localhost/db_name";
router.get('/getStudents', function(req, res) {
var results = [];
pg.connect(conString, function(err, client, done) {
if (err) {
done();
console.log(err);
return res.status(500).json({success: false, data: err});
}
var query = client.query('SELECT first_name, last_name, email FROM students');
query.on('row', function(row) {
results.push(row);
});
query.on('end', function() {
done();
return res.json(results);
});
});
});
在页面加载时,从商店调用它来设置学生数组。好像这里出了点问题:
var request = require('super agent');
function getStudents() {
request
.get('/api/getStudents')
.set('Accept', 'application/json')
.end(function(err, res) {
if (err) {
console.log("There's been an error: getting students.");
console.log(err);
} else {
return res;
}
});
}
如果我卷曲 localhost:3000/api/getStudents
,我会得到我期望的 JSON 响应。
但是,当我在页面加载时调用它时,出现 ECONNREFUSED 错误:
Error: connect ECONNREFUSED 127.0.0.1:80]
code: 'ECONNREFUSED',
errno: 'ECONNREFUSED',
syscall: 'connect',
address: '127.0.0.1',
port: 80,
response: undefined
不确定为什么我在 HTTP 端口上收到错误。这是我第一次使用 node-postgres、superagent 和 React,因此非常感谢您的帮助。
编辑: 忘记提及我能够发出 POST 请求并将项目插入数据库而不会出现任何错误。此错误仅在我尝试 GET 请求时发生。
在 get
方法中试试这个(插入完整路径 url):
request
.get('http://localhost:3000/api/getStudents')
.set('Accept', 'application/json')
.end(function(err, res) {
if (err) {
console.log("There's been an error: getting students.");
console.log(err);
} else {
return res;
}
});
查看 CORS 文档以获取使用绝对 urls:
的示例如果您的请求中没有协议,也会出现该错误URL。
改为
request.get('www.myexample.com/api/getStudents')
做
request.get('https://www.myexample.com/api/getStudents')
^^^^^^^^