浅析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 相关文章推荐
jQuery 拖动层(在可视区域范围内)
May 24 Javascript
利用js实现选项卡的特别效果的实例
Mar 03 Javascript
js+csss实现的一个带复选框的下拉框
Sep 29 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
JavaScript中的时间处理小结
Feb 24 Javascript
浅谈javascript中的事件冒泡和事件捕获
Dec 28 Javascript
纯js实现图片匀速淡入淡出效果
Aug 22 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
JavaScript实现为事件句柄绑定监听函数的方法分析
Nov 14 Javascript
ES6中let、const的区别及变量的解构赋值操作方法实例分析
Oct 15 Javascript
vue中移动端调取本地的复制的文本方式
Jul 18 Javascript
JavaScript使用setTimeout实现倒计时效果
Feb 19 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
新版PHP极大的增强功能和性能
2006/10/09 PHP
Windows下的PHP安装pear教程
2014/10/24 PHP
PHP中substr()与explode()函数用法分析
2014/11/24 PHP
WebQQ最新登陆协议的用法
2014/12/22 PHP
php入门教程之Zend Studio设置与开发实例
2016/09/09 PHP
浅谈PHP的数据库接口和技术
2016/12/09 PHP
PHP实现蛇形矩阵,回环矩阵及数字螺旋矩阵的方法分析
2017/05/29 PHP
PHP SFTP实现上传下载功能
2017/07/26 PHP
把JS与CSS写在同一个文件里的书写方法
2007/06/02 Javascript
JS 文字符串转换unicode编码函数
2009/05/30 Javascript
初识javascript 文档碎片
2010/07/13 Javascript
js脚本分页代码分享(7种样式)
2015/08/19 Javascript
Bootstrap组件系列之福利篇几款好用的组件(推荐二)
2016/07/12 Javascript
使用HTML5+Boostrap打造简单的音乐播放器
2016/08/05 Javascript
js实现的xml对象转json功能示例
2016/12/24 Javascript
Javascript 实现全屏滚动实例代码
2016/12/31 Javascript
老生常谈jquery中detach()和remove()的区别
2017/03/02 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
nodejs之get/post请求的几种方式小结
2017/07/26 NodeJs
微信小程序+云开发实现欢迎登录注册
2019/05/24 Javascript
在Echarts图中给坐标轴加一个标识线markLine
2020/07/20 Javascript
对Python中Iterator和Iterable的区别详解
2018/10/18 Python
django小技巧之html模板中调用对象属性或对象的方法
2018/11/30 Python
浅谈Python基础—判断和循环
2019/03/22 Python
Python虚拟环境的原理及使用详解
2019/07/02 Python
django 邮件发送模块smtp使用详解
2019/07/22 Python
python获取栅格点和面值的实现
2020/03/10 Python
Python logging模块原理解析及应用
2020/08/13 Python
意大利香水和化妆品购物网站:Parfimo.it
2019/10/06 全球购物
AJax面试题
2014/11/25 面试题
高二地理教学反思
2014/01/24 职场文书
医学专业大学生求职信
2014/07/12 职场文书
放飞理想演讲稿
2014/09/09 职场文书
忠诚奉献演讲稿
2014/09/12 职场文书
PHP中->和=>的意思
2021/03/31 PHP
pytorch 预训练模型读取修改相关参数的填坑问题
2021/06/05 Python