Board logo

标题: 利用 Dojo Toolkit 使用 web 服务(4) [打印本页]

作者: look_w    时间: 2018-9-23 13:36     标题: 利用 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 对象),该方法为用户提供灵活性和稳定性。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0