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

时间:2017-05-26 13:40:02

标签: javascript node.js ajax axios

我有一个在端口3000上运行的Node.js应用程序,它正在使用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类似的东西?

1 个答案:

答案 0 :(得分:2)

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

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