我是API开发的新手,正在尝试创建发布请求并将数据发送到API,但它始终在chrome中超时。我得到的错误是net :: ERR_EMPTY_RESPONSE。 这是我试图发送信息的js。在另一个称为addToCart()的方法中调用了该方法,在该方法中我将购物车作为参数传递给了
function sendToAPI(cart) {
var req = new XMLHttpRequest();
req.open('POST', '/add');
req.setRequestHeader('Content-Type', 'application/json');
req.send(JSON.stringify({cart : cart}));
req.addEventListener('load', () => {
console.log(req.resonseText);
})
req.addEventListener('error', () => {
console.log('There was an error');
console.log(error);
});
}
这是我创建API的地方:
const express = require("express");
const bodyParser = require("body-parser");
const api = express();
api.use(express.static(__dirname + '/public'));
api.use(bodyParser);
api.listen(3000, function() {
console.log("Server is running on port 3000");
});
api.post('/add', function(req, res) {
console.log(req.body);
res.send("It works");
});
答案 0 :(得分:0)
我看到几个问题。首先,这是不正确的:
app.get("/callback", (request, response, next) => {
passport.authenticate("auth0", (auth0Error, token) => {
if (!token){
// HERE, token is false
}
...
})(request, response, next);
});
对于JSON响应,您可以这样做:
api.use(bodyParser);
而且,body解析器内置于Express中,因此您无需手动加载body-parser模块。您可以这样做:
api.use(bodyParser.json());
然后,在您的客户端代码中,该操作:
api.use(express.text());
拼写错误,应该是这样:
console.log(req.resonseText);
而且,在客户端代码中,您还应该检查响应返回的状态代码。
仅供参考,浏览器中的新console.log(req.responseText);
界面比fetch()
更好用。