Node.js 用于本地服务器端脚本调用的 Axios

Node.js Axios for local Server Side script call

我在端口 3000 上有一个 Node.js 应用程序 运行ning,它使用 axios 进行服务器端 ajax 调用。

工作如下

我的 axio ajax 调用是在 /public/views/example.js

中进行的
example() {

    axios.get (
        // server ip, port and route
        "http://192.168.1.5:3000/example", {
            params : {
                arg01: "nothing"
            }
        }
    )
    .then (
        result => console.log(result)
    )
    .catch (
        error => console.log(error)
    );

}

及其调用的路由 /public/logic/example_route.js

router.get("/example", function(req, res) {

    // just to test the ajax request and response

    var result = req.query.arg01;
    res.send(result);

});

所以当我从网络内部 运行 它时一切正常,但是如果我尝试从网络外部 运行 它(使用转发了 3000 端口的 DNS)它失败了,我想这是因为在外部执行时 192.168.1.5 不再有效,因为我必须使用 DNS。

当我将 axios 调用更改为以下内容时

example() {

    axios.get (
        // server ip, port and route
        "http://www.dnsname.com:3000/example", {
            params : {
                arg01: "nothing"
            }
        }
    )
    .then (
        result => console.log(result)
    )
    .catch (
        error => console.log(error)
    );

}

然后它在外部再次起作用但在内部不起作用。有办法解决这个问题吗?

我知道在使用 php 进行 ajax 调用时我没有遇到这个问题,因为我可以使用脚本的实际位置而不是路由

$.ajax({
    url      : "logic/example.php",
    type     : "GET",
    dataType : "json",
    data     : {
                  "arg01":"nothing"
               },
    success  : function(result) {
                  console.log(result);
               },
    error    : function(log) {
                  console.log(log.message);
               }
});

是否可以用 Node.js 和 axios 实现类似的东西?

您可以使用没有实际主机和端口的路径。

example() {    
    axios.get (
        // just the path without host or port
        "/example", {
            params : {
                arg01: "nothing"
            }
        }
    )
    .then (
        result => console.log(result)
    )
    .catch (
        error => console.log(error)
    );    
}