浅析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 HotKeys轻松搞定键盘事件代码
Aug 30 Javascript
Javascript this关键字使用分析
Oct 21 Javascript
基于jquery的放大镜效果
May 30 Javascript
js实现iframe框架取值的方法(兼容IE,firefox,chrome等)
Nov 26 Javascript
非常棒的jQuery图片轮播效果
Apr 17 Javascript
vue.js开发环境搭建教程
May 04 Javascript
mac中利用NVM管理不同node版本的方法详解
Nov 08 Javascript
vue中实现移动端的scroll滚动方法
Mar 03 Javascript
浅谈从React渲染流程分析Diff算法
Sep 08 Javascript
vue接入腾讯防水墙代码
May 07 Javascript
Vue解决echart在element的tab切换时显示不正确问题
Aug 03 Javascript
利用 JavaScript 实现并发控制的示例代码
Dec 31 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删除文件夹的三种方法
2013/06/09 PHP
php编程每天必学之验证码
2016/03/03 PHP
window.open被浏览器拦截后的自定义提示效果代码
2007/11/19 Javascript
jquery 事件执行检测代码
2009/12/09 Javascript
讨论javascript(一)工厂方式 js面象对象的定义方法
2009/12/15 Javascript
js 蒙版进度条(结合图片)
2010/03/10 Javascript
file模式访问网页时iframe高度自适应解决方案
2013/01/16 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
javascript先序遍历DOM树的方法
2016/02/27 Javascript
JS仿京东移动端手指拨动切换轮播图效果
2020/04/10 Javascript
利用vue实现模态框组件
2016/12/19 Javascript
node.js操作MongoDB的实例详解
2017/10/11 Javascript
vue使用ElementUI时导航栏默认展开功能的实现
2018/07/04 Javascript
小程序tab页无法传递参数的方法
2018/08/03 Javascript
React+Webpack快速上手指南(小结)
2018/08/15 Javascript
示例vue 的keep-alive缓存功能的实现
2018/12/13 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
Python enumerate遍历数组示例应用
2008/09/06 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
基于python-opencv3的图像显示和保存操作
2019/06/27 Python
Python assert语句的简单使用示例
2019/07/28 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
python 使用递归实现打印一个数字的每一位示例
2020/02/27 Python
python的列表List求均值和中位数实例
2020/03/03 Python
Python基于stuck实现scoket文件传输
2020/04/02 Python
windows支持哪个版本的python
2020/07/03 Python
Python调用C语言程序方法解析
2020/07/07 Python
CSS3 animation ? steps 函数详解
2019/08/30 HTML / CSS
谷歌浏览器小字体处理方案即12px以下字体
2013/12/17 HTML / CSS
2014年社区宣传工作总结
2014/12/02 职场文书
幼儿园老师工作总结2015
2015/05/22 职场文书
《蜜蜂引路》教学反思
2016/02/22 职场文书
如何书写公司员工保密协议?
2019/06/27 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis
Python软件包安装的三种常见方法
2022/07/07 Python
Python find()、rfind()方法及作用
2022/12/24 Python