jquery - 如何使用 jQuery 对本地 Web 服务进行 RESTful 调用

标签 jquery ajax rest

我是一个应用程序的开发人员,该应用程序除了其主要用途外还包含 RESTful Web 服务,以允许外部应用程序与其交互。我还提供了一个 Web UI 作为应用程序的一部分,用于配置和使用目的。我想使用内置的 Web 服务通过 ajax 调用在 Web UI 和应用程序之间进行交互。问题是我不能在我的 jquery 代码中调用 Web 服务,因为用户可以从任何地方访问 Web UI,并且如果不手动编辑代码,它就不会知道 Web 服务的正确地址?有没有好的办法来克服这个障碍呢? Web UI 通过 JavaScript 与应用程序的内置 Web 服务进行通信一定是很常见的事情。

以下是我当前正在使用的 Web 服务调用的示例:

$.getJSON('http://localhost:8732/api/objects/type/place?callback=?', null, function (data) {
      //$('#callback').html(data);
      $("#callback").append('<ul id="places" data-role="listview" data-theme="g">');
      $.each(data,function(i,obj){
         $("#places").append('<li><a href="#" onclick="openPlace(\''+obj.Name+'\');" >'+obj.Name+'</a></li>');
      });
      $('#places').listview();
  });

正如您所看到的,我刚刚输入了 localhost 作为 Web 服务的地址,但这仅在我从与服务相同的计算机访问 Web UI 时才有效。我还能采取什么其他方法来做到这一点?是否必须求助于某种服务器端脚本?这就是我希望通过使用 jquery 和 Restful Web 服务来避免的情况。

最佳答案

“localhost”只是 127.0.0.1(您的本地计算机)的别名。您的计算机还有一个真实的 IP 地址,可以在您的本地网络上识别它。这可能看起来像 192.168.x.x。您可以使用该计算机的实际地址与网络服务对话:

'http://192.168.x.x:8732/api/objects/type/place?callback=?...'

(当然,这仅在您从同一网络连接到该计算机时才有效。)

如果您希望将其提供给“其他”人,您必须像发布网站一样发布您的网络服务..即从该路由器将端口转发到该计算机..并使用您的外部 IP 地址和/或 dns 来命中它。

更新:

你们如何提供 html 服务?如果您的应用程序类似于路由器,其中管理界面基于 Web,则您可以保存/使用主机名并在回家的服务调用中使用。连接到管理 web 应用程序是您的客户的责任。因此他们可以使用 localhost、127.0.0.1、192.168.1.x、//someservername 或其他别名方法。您应该关心的只是主机?

var host = window.location.hostname;
$.getJSON('http://' + host + ':8732/api/objects/type/place?callback=?', ...

关于jquery - 如何使用 jQuery 对本地 Web 服务进行 RESTful 调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843459/

相关文章:

javascript - 如何使用Animated-Multi-level-jQuery-Dropdown-Plugin没有错误?

jquery - 使用 Ajax/jQuery 从 CouchDB 读取连续源

javascript - 使用JQuery发送表单数据并解析返回的JSON数据

javascript - 如何操作 json 数组中的每个项目以转到特定的元素类、href、id、文本等?

api - 如何实现无状态 REST API

rest - 微服务:REST 与消息传递

javascript - 如何使用 jQuery 访问存储在数组中的元素?

javascript - CSS 页脚位置

javascript - Google Analytics 出站链接事件跟踪

python - Django 结果返回绝对 URL