通过request.post(Express.js)POST自定义标头

时间:2016-05-18 12:35:15

标签: javascript node.js post express

我试图复制一个非常简单的POST'使用在localhost上运行的Express应用程序进行API注销调用。应该使用注销信息并将其从localhost传递给MY-SERVER

应该如何看待:

 curl "http://MY-SERVER/api/2.2/auth/signout" -X POST -H "Auth:1245"

我使用request.post,在单独的路径文件中设置" signout.js" (见下文)。

var express = require('express');
var request = require('request');
var cheerio = require('cheerio');
var router = express.Router();
var OnlineApiUrl = 'https://MY-SERVER/api/2.2/';

//Sign Out
router.post('/auth/signout', function(req, res) {
 var authentication_token = req.query.auth_token;

request.post({
url: OnlineApiUrl + 'auth/signout',
headers: {
      'Auth': authentication_token
}
}, function(err, response, body) {
var $ = cheerio.load(body);
var hasError = $('error').length;
if (hasError) {
  response = {
    http_code: $('error').attr('code'),
    http_message: $('summary').text()
  };
} else {
  response = {
    http_code: 204
  };
}
return res.json(response);
});
});
module.exports = router;

据我所知,它应该有效,但是当我运行时

curl https://localhost:8080/api/auth/signout?auth=12345  --cacert /etc/nginx/ssl/server.crt 

它只返回"不能GET / api / auth / signout?auth = 12345"

知道我在这里失踪的是什么吗?它只需要传递该自定义标头,没有别的。我也不确定为什么它会给我"不能GET"对于POST请求...

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。问题是我正在使用' POST'两次:都在更高级别的路由器。邮箱中。和' request.post'。将更高级别的一个放在' router.get' (同时保持' request.post')解决了它。