浅析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 $.getJSON()跨域请求
Dec 21 Javascript
使用iframe window的scroll方法控制iframe页面滚动
Mar 05 Javascript
js运动动画的八个知识点
Mar 12 Javascript
AngularJs  Creating Services详解及示例代码
Sep 02 Javascript
IntersectionObserver API 详解篇
Dec 11 Javascript
js Date()日期函数浏览器兼容问题解决方法
Sep 12 Javascript
基于webpack 实用配置方法总结
Sep 28 Javascript
微信小程序自定义对话框弹出和隐藏动画
Jul 19 Javascript
微信小程序实现的一键连接wifi功能示例
Apr 24 Javascript
使用异步组件优化Vue应用程序的性能
Apr 28 Javascript
通过javascript实现段落的收缩与展开
Jun 26 Javascript
vue-router二级导航切换路由及高亮显示的实现方法
Jul 10 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 无限分类三种方式 非函数的递归调用!
2011/08/26 PHP
简单的php新闻发布系统教程
2014/05/09 PHP
PHP小技巧之JS和CSS优化工具Minify的使用方法
2014/05/19 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
PHP基于phpqrcode生成带LOGO图像的二维码实例
2015/07/10 PHP
mac os快速切换多个PHP版本的方法
2017/03/07 PHP
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
基于jquery的bankInput银行卡账号格式化
2012/08/22 Javascript
js获取微信版本号的方法
2015/05/12 Javascript
JS中Location使用详解
2015/05/12 Javascript
jquery实现漫天雪花飞舞的圣诞祝福雪花效果代码分享
2015/08/20 Javascript
JS未跨域操作iframe里的DOM
2016/06/01 Javascript
使用plupload自定义参数实现多文件上传
2016/07/19 Javascript
JavaScript创建对象的七种方式(推荐)
2017/06/26 Javascript
Element实现表格分页数据选择+全选所有完善批量操作
2019/06/07 Javascript
推荐几个不错的console调试技巧实现
2019/12/20 Javascript
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[02:40]DOTA2超级联赛专访430 从小就爱玩对抗性游戏
2013/06/18 DOTA
[03:42]2014DOTA2西雅图国际邀请赛7月9日TOPPLAY
2014/07/09 DOTA
python获得文件创建时间和修改时间的方法
2015/06/30 Python
Python数据类型详解(一)字符串
2016/05/08 Python
python版本坑:md5例子(python2与python3中md5区别)
2017/06/20 Python
numpy排序与集合运算用法示例
2017/12/15 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
Python实现定制自动化业务流量报表周报功能【XlsxWriter模块】
2019/03/11 Python
python开发游戏的前期准备
2019/05/05 Python
python:HDF和CSV存储优劣对比分析
2020/06/08 Python
python 5个顶级异步框架推荐
2020/09/09 Python
智能电子应届生求职信
2013/11/10 职场文书
职业规划实施方案
2014/06/10 职场文书
领导个人查摆剖析材料
2014/10/29 职场文书
员工辞退通知书
2015/04/17 职场文书
少年雷锋观后感
2015/06/10 职场文书
毕业欢送晚会主持词
2019/06/25 职场文书
Opencv中cv2.floodFill算法的使用
2021/06/18 Python