【问题标题】:Unable to invoke REST from node.js which works if I invoke from browser?无法从 node.js 调用 REST,如果我从浏览器调用它会起作用?
【发布时间】:2025-12-01 00:05:02
【问题描述】:

我正在尝试调用在另一台机器上运行的 WebServer [猫鼬嵌入式网络服务器]。

下面是代码。

var express = require('express');
var http = require ('http');
var router = express.Router();

/* GET home page. */
router.get('/', function(req, res) {
  res.render('index', { title: 'Express' });
});


router.get ('/start', function (req, res) {
   res.render('start',  { title: 'Hello, World!' });
});

router.get ('/startAction', function (req, res) {
   jsonObject = JSON.stringify ({
   "n1" : 8,
   "n2" : 10
   }); // jSon Data.
   var postheaders =  {
      'content-Type' : 'application/json',
      'content-Length' : Buffer.byteLength(jsonObject, 'utf8')
   }
   var optionspost = {
       host : "http://192.168.6.120/",
       port : 5432,
       path : "/api/sum",
       method : "POST",
       headers : postheaders
   };
   console.log ("Invoking Restful API"); 
   var reqPost = http.request(optionspost, function(res) {
      console.log ("status code ", res.statusCode);
   res.render('start',  { title: 'Send some result of Request..' });
   }); 

});
module.exports = router;

我得到的错误是..

events.js:72
        throw er; // Unhandled 'error' event
              ^
Error: getaddrinfo ENOTFOUND
    at errnoException (dns.js:37:11)
    at Object.onanswer [as oncomplete] (dns.js:124:16)

但是,如果我从 html 页面执行相同的请求。

<script language="javascript" type="text/javascript">
  jQuery(function() {

    $(document).on('keyup', '#n1, #n2', function() {
      $.ajax({
        url: '/api/sum',
        method: 'POST',
        dataType: 'json',
        data: { n1: $('#n1').val(), n2: $('#n2').val() },
        success: function(json) {
          $('#result').html(json.result);
        }
      });
    });

  });
</script>

我对 node.js 非常陌生。请指出罪魁祸首在哪里?

【问题讨论】:

    标签: javascript node.js rest express


    【解决方案1】:

    这个:host : "http://192.168.6.120/", 应该是:host : "192.168.6.120",

    【讨论】:

    • 我尝试更改相同的内容,但在打印“Invoking Restful API”后停止。我检查了浏览器,仍然可以确认服务器端是否完美。 :(
    • 您是否尝试过手动使用类似curl 的实用程序来执行完全相同的POST 请求?
    • 不,我没有这样做。你介意提供命令吗?
    • 我试过但出错了。 curl -d '{ "n1" :"10", "n2" : "20"}' -H "Content-Type:application/json" http ://.192.168.6.120:5432/app/sum curl: (6) 无法解析主机'.192.168.6.120'
    • 您在192 之前有一个.。尝试删除它。