浅析Node在构建超媒体API中的作用


Posted in Javascript onJuly 30, 2014

无论是超媒体还是超文本,使用的传输协议都是HTTP,这意味着超媒体可以被所有的浏览器所接受。而描述超媒体的类型我们使用MIME。MIME即Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型,MIME是一个互联网标准,最早是应用于电子邮件系统的,后来其定义逐步应用到互联网领域。用MIME指定媒体的类型,那么客户端浏览器就能清楚地知道,该如何处理这种类型的媒体。

Node.js是基于谷歌V8 JavaScript引擎构建的一种库,主要用于方便、快捷的搭建易伸缩的网络应用。Node.js是事件驱动的,它充分利用JavaScript的闭包特性和事件处理机制,采用了非阻塞I/O模型,非常适合数据密集型的实时应用。Node.js实现了与Apache HTTP Server相似的功能,使之具备了构建基于JavaScript的高并发Web应用的能力。Node.js使得前后端开发可以使用同一种编程语言——JavaScript。

REST Web服务可以说是为HTTP协议量身定做的,在HTTP协议中使用URI来标识唯一的网络资源,用GET、POST、PUT、DELETE等动词来操作资源,REST Web服务显然比SOAP Web服务更加简洁高效,因为它不需要额外的封装协议和远程过程调用。

至于资源的表现形式,可以是HTML5的,也可以是XML数据格式、JSON数据格式,又或者是二进制的Protobuf格式。使用哪一种数据格式,取决于项目的需求。

Node.js提供了HTTP操纵能力,在客户端或服务器端都可以使用。Node.js最大的优势是它有庞大的第三方库,在RESTful Web Services方面,同样有多个库可以简化我们的开发工作。比如:

1)node-restify

主页: https://github.com/mcavage/node-restify

restify是一个精简的、与Express库相似的,用于构建RESTful API的Node.js库。

安装:

$ npm install restify

2)node-restful

主页: https://github.com/baugarten/node-restful

node-restful是Express库的封装,很适合创建RESTful API。

安装:

npm install node-restful

还有很多第三方库就不一一列举了。除此以外,我们还可以直接使用Node.js的核心库构建RESTful API,或者是使用Express库构建RESTful API。方法有很多种,都能达到目的。

超媒体的书很少,因此专门论述如何构建超媒体API的书就更少了,超媒体也是网络资源,同样的可以用URI来定义,因此Node.js来实现超媒体的RESTful API是很容易的。

不得不说,《使用HTML5和Node构建超媒体API》这本书翻译的太生硬了,阅读时感觉不畅快。但是,这本书本身还是很有价值的,因为实现超媒体的RESTful API这种需求很常见,可以说是Web开发者的必备技能之一。反复阅读,揣摩其内涵,是我对此书读者的一点小小建议。

Javascript 相关文章推荐
js类 from qq
Nov 13 Javascript
js 处理数组重复元素示例代码
Dec 27 Javascript
jQuery将多条数据插入模态框的示例代码
Sep 25 Javascript
JavaScript中创建字典对象(dictionary)实例
Mar 31 Javascript
AngularJs中Bootstrap3 datetimepicker使用实例
Dec 13 Javascript
Javascript中 toFixed四舍六入方法
Aug 21 Javascript
在 Linux/Unix 中不重启 Vim 而重新加载 .vimrc 文件的流程
Mar 21 Javascript
微信小程序实现左右联动的实战记录
Jul 05 Javascript
JS获取月的第几周和年的第几周实例代码
Dec 05 Javascript
vue实现路由不变的情况下,刷新页面操作示例
Feb 02 Javascript
JavaScript检测浏览器是否支持CSS变量代码实例
Apr 03 Javascript
详解javascript void(0)
Jul 13 Javascript
JS实现图片无间断滚动代码汇总
Jul 30 #Javascript
使用jquery.upload.js实现异步上传示例代码
Jul 29 #Javascript
js动态添加onclick事件可传参数与不传参数
Jul 29 #Javascript
使用focus方法让光标默认停留在INPUT框
Jul 29 #Javascript
Node.js 服务器端应用开发框架 -- Hapi.js
Jul 29 #Javascript
node.js 开发指南 ? Node.js 连接 MySQL 并进行数据库操作
Jul 29 #Javascript
js返回前一页刷新本页重载页面
Jul 29 #Javascript
You might like
深入file_get_contents函数抓取内容失败的原因分析
2013/06/25 PHP
CI框架支持$_GET的两种实现方法
2016/05/18 PHP
thinkPHP2.1自定义标签库的导入方法详解
2016/07/20 PHP
Yii框架防止sql注入,xss攻击与csrf攻击的方法
2016/10/18 PHP
PHP递归遍历指定文件夹内的文件实现方法
2016/11/15 PHP
js同时按下两个方向键
2007/12/01 Javascript
JavaScript Cookie 直接浏览网站分网址
2009/12/08 Javascript
Jquery动态进行图片缩略的原理及实现
2013/08/13 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
一个不错的字符串转码解码函数(自写)
2014/07/31 Javascript
javascript页面倒计时实例
2015/07/25 Javascript
使用javascript插入样式
2016/03/14 Javascript
基于jQuery实现动态搜索显示功能
2016/05/05 Javascript
仿iframe效果Aajx文件上传实例
2016/11/18 Javascript
JavaScript正则表达式替换字符串中图片地址(img src)的方法
2017/01/13 Javascript
JavaScript原生节点操作小结
2017/01/17 Javascript
JavaScript中清空数组的三种方式
2017/03/22 Javascript
js实现登录注册框手机号和验证码校验(前端部分)
2017/09/28 Javascript
对angular2中的ngfor和ngif指令嵌套实例讲解
2018/09/12 Javascript
jQuery移动端跑马灯抽奖特效升级版(抽奖概率固定)实现方法
2019/01/18 jQuery
sortable+element 实现表格行拖拽的方法示例
2019/06/07 Javascript
jQuery子选择器与可见性选择器实例分析
2019/06/28 jQuery
JS XMLHttpRequest原理与使用方法深入详解
2020/04/30 Javascript
[51:17]完美世界DOTA2联赛循环赛Inki vs DeMonsTer 第二场 10月30日
2020/10/31 DOTA
Python验证码识别的方法
2015/07/10 Python
浅谈Scrapy框架普通反爬虫机制的应对策略
2017/12/28 Python
对python借助百度云API对评论进行观点抽取的方法详解
2019/02/21 Python
python 决策树算法的实现
2020/10/09 Python
python绘制汉诺塔
2021/03/01 Python
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
美国内衣品牌:Leonisa
2016/08/14 全球购物
专科毕业生学习生活的自我评价
2013/10/26 职场文书
高校自主招生自荐信
2013/12/09 职场文书
2015年民兵整组工作总结
2015/07/24 职场文书
Mybatis 一级缓存和二级缓存原理区别
2022/09/23 Java/Android