首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

利用 Dojo Toolkit 使用 web 服务(4)

利用 Dojo Toolkit 使用 web 服务(4)

使用一个 RESTful 服务除了用于发送请求的 HTTP 方法之外,大部分 RESTful web 服务的 URL 构建方式都遵守为特定类型请求构建 URL 的方式。如果您构建一个符合这些传统习惯的 RESTful 服务,您可以使用 dojo.rpc.Rest 对象为您进行调用。dojo.rpc.Rest 对象进一步简化了传统服务调用。
清单 8 是一个使用 Dojo Toolkit 调用 RESTful web 服务的示例。
清单 8. 使用 dojo.rpc.Rest 调用一个 RESTful web 服务
1
2
3
// Calling this access the URL hobbits/1 (see Table 2)
var service = dojox.rpc.Rest("hobbits");
service("1");




表 2 列出了固有的 RESTful URL 和 HTTP 动作的示例,应该同每个类型的服务相匹配。注意,不是每一个浏览器都支持所有 HTTP 方法,因此您应该根据您的需要进行测试和验证,对于多数用户,使用 GET 和 POST 方法可能是最佳选择。
表 2. RESTful 传统 URL动作HTTP 方法示例 URL查找一个对象GEThttp://www.example.com/hobbits/1查找所有对象GEThttp://www.example.com/hobbits/删除一个对象DELETEhttp://www.example.com/hobbits/1创建一个对象POSThttp://www.example.com/hobbits/更新一个新对象PUThttp://www.example.com/hobbits/1
如果您想创建一个 RESTful web 服务的全部实现,框架有助于指导您构建符合 RESTful URL 习惯的 URL。参见 ,寻找不同语言的各种框架的更多信息。
精确地显示结果既然您将要使用 Dojo 代码调用服务,您也可以更新 div 元素的内容来包含查询结果。这使得用户可以根据其类型查看建议选项。
想要更新包含建议选项的 div 元素的值,使用 dojo.byId 方法通过 ID 获取 div 的参考资料,并如清单 9 所示设置 innerHTML 属性。dojo.byId 方法是传统 JavaScript 的 document.getElementById 方法的别名。
清单 9. 更新元素的内容
1
2
3
4
5
6
7
8
9
10
11
12
// the full load function...
load:function(data) {
    var rootEl = data.documentElement;
    var resultHTML = "<ul>";
    for (var i = 0; i < rootEl.childNodes.length;i++) {
        resultHTML += "<li>" +
        dojox.xml.parser.textContent(rootEl.childNodes) +
        "</li>";
    }
    resultHTML+="</ul>";
    target.innerHTML = resultHTML;
},




现在,您的代码已经可以正常运行了,您可以在浏览器中查看您的 index.html 页。当您输入一个值时 — 例如 Bag— 建议选项将自动出现在您的 div 元素中。尽管本文并不能涵盖全部的,您也应该使用 Cascading Style Sheets (CSS) 使这些 div 整齐地排列在下拉框中,根据用户的输入提供建议选项。
处理长期运行的服务当从一个 web 浏览器处理长期运行服务时,主要关注两方面的问题:
  • 用户体验
  • 可靠性
用户体验在服务执行时,如果在浏览器中没有明显的改变,用户体验将受长期运行服务的影响。如果您的 web 页含有一个按钮,可以进行一个 Ajax 或 RESTful 服务调用或者显示结果,您应该利用这些浏览器来显示用户即将发生的事情。否则您将要冒这样的风险,一个用户多次提交表单或者您将对网站很不耐烦甚至离开。
为了应对用户体验问题,使用一个动画(Dojo Toolkit 有针对这些的方法)或者禁用提交按钮,使用户不能多次提交。有了动画视觉(例如,旋转时钟),用户可以意识到将要发生什么,更愿意等待进程完成。
可靠性期待长期运行的服务来使用 Ajax 调用可能有问题,但是它们可能是有效的示例。长期运行服务的示例是那些聚集数据、生成文档或者存档文件示例。
在这种情况下,简单调用服务并等待 — 特别是如果服务要运行好几秒,不是一个最佳实践。如果您的连接是混乱的,或者您的浏览器关闭了,那么在服务完成时,您将不能依赖回调机制来触发。
如果您可以控制服务,可以考虑向您的调用者返回一个惟一的限定符,使用一种后来向不同服务询问请求状态的方式。您的浏览器可以将这些数字放到本地的一个 cookie 存储设备中,也可以让浏览器和服务一起来保存用户数量。
调用服务的这种方法允许您在服务器端开始长期运行的进程。在浏览器端,您可以对请求状态使用轮询来访问服务层。(您可以对此使用 Dojo Toolkit's Timer 对象),该方法为用户提供灵活性和稳定性。
返回列表