浅析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实现点小图看大图效果的思路及示例代码
Oct 28 Javascript
JavaScript中的object转换函数toString()与valueOf()介绍
Dec 31 Javascript
javascript中hasOwnProperty() 方法使用指南
Mar 09 Javascript
JavaScript SHA512&SHA256加密算法详解
Aug 11 Javascript
js仿百度登录页实现拖动窗口效果
Mar 11 Javascript
jQuery实现的导航下拉菜单效果
Jul 04 Javascript
JavaScript实现经典排序算法之插入排序
Dec 28 Javascript
jQuery Ajax实现跨域请求
Jan 21 Javascript
JavaScript实现向select下拉框中添加和删除元素的方法
Mar 07 Javascript
详解基于vue的移动web app页面缓存解决方案
Aug 03 Javascript
JavaScript实现的3D旋转魔方动画效果实例代码
Jul 31 Javascript
微信公众号网页分享功能开发的示例代码
May 27 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
用libTemplate实现静态网页的生成
2006/10/09 PHP
Symfony页面的基本创建实例详解
2015/01/26 PHP
PHP的Socket通信之UDP通信实例
2015/07/02 PHP
php实现表单多按钮提交action的处理方法
2015/10/24 PHP
PHP 代码简洁之道(小结)
2019/10/16 PHP
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
js关于字符长度限制的问题示例探讨
2014/01/24 Javascript
初识SmartJS - AOP三剑客
2014/06/08 Javascript
node.js中的path.join方法使用说明
2014/12/08 Javascript
JavaScript实现鼠标点击后层展开效果的方法
2015/05/13 Javascript
简介alert()与console.log()的不同
2015/08/26 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
AngularJS中$injector、$rootScope和$scope的概念和关联关系深入分析
2017/01/19 Javascript
使用JavaScriptCore实现OC和JS交互详解
2017/03/28 Javascript
jQuery异步提交表单实例
2017/05/30 jQuery
JS脚本实现网页自动秒杀点击
2018/01/11 Javascript
浅析vue深复制
2018/01/29 Javascript
jQuery实现的页面弹幕效果【测试可用】
2018/08/17 jQuery
彻底弄懂 JavaScript 执行机制
2018/10/23 Javascript
微信小程序如何使用云开发
2019/05/17 Javascript
[47:48]DOTA2上海特级锦标赛D组小组赛#2 Liquid VS VP第三局
2016/02/28 DOTA
pyqt4教程之实现半透明的天气预报界面示例
2014/03/02 Python
python实现复制整个目录的方法
2015/05/12 Python
Windows下Eclipse+PyDev配置Python+PyQt4开发环境
2016/05/17 Python
Pyqt5 实现跳转界面并关闭当前界面的方法
2019/06/19 Python
pandas中的数据去重处理的实现方法
2020/02/10 Python
HTML5教程之html 5 本地数据库(Web Sql Database)
2014/04/03 HTML / CSS
Feelunique美国:欧洲大型的在线美妆零售电商
2018/11/04 全球购物
大专生工程监理求职信
2013/10/04 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
市场营销专业毕业生求职信
2014/03/26 职场文书
2015秋季幼儿园开学寄语
2015/03/25 职场文书
大学生安全教育主题班会
2015/08/12 职场文书
详解Node.js如何处理ES6模块
2021/05/15 Javascript