浅析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的让页面控件不可用的实现代码
Apr 27 Javascript
jQuery实现的立体文字渐变效果
May 17 Javascript
为超链接加上disabled后的故事
Dec 10 Javascript
基于Jquery 解决Ajax请求的页面 浏览器后退前进功能,页面刷新功能实效问题
Dec 11 Javascript
JS表格组件神器bootstrap table详解(基础版)
Dec 08 Javascript
JS实现DIV容器赋值的方法
Dec 14 Javascript
jQuery实现获取h1-h6标题元素值的方法
Mar 06 Javascript
使用ef6创建oracle数据库的实体模型遇到的问题及解决方案
Nov 09 Javascript
React中获取数据的3种方法及优缺点
Feb 18 Javascript
js实现随机点名器精简版
Jun 29 Javascript
vue中keep-alive、activated的探讨和使用详解
Jul 26 Javascript
前端使用crypto.js进行加密的函数代码
Aug 16 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的一个完整SMTP类(解决邮件服务器需要验证时的问题)
2006/10/09 PHP
谈谈PHP语法(2)
2006/10/09 PHP
discuz7 phpMysql操作类
2009/06/21 PHP
PHP 根据IP地址控制访问的代码
2010/04/22 PHP
php下使用strpos需要注意 === 运算符
2010/07/17 PHP
谈谈从phpinfo中能获取哪些值得注意的信息
2017/03/28 PHP
JavaScript创建一个欢迎cookie弹出窗实现代码
2013/03/15 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
2013/05/30 Javascript
JS格式化数字保留两位小数点示例代码
2013/10/15 Javascript
JavaScript实现为指定对象添加多个事件处理程序的方法
2015/04/17 Javascript
jQuery 操作input中radio的技巧
2016/07/18 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
d3.js实现简单的网络拓扑图实例代码
2016/11/06 Javascript
angular学习之ngRoute路由机制
2017/04/12 Javascript
使用JavaScript实现点击循环切换图片效果
2017/09/03 Javascript
vue操作下拉选择器获取选择的数据的id方法
2018/08/24 Javascript
Angular ui-roter 和AngularJS 通过 ocLazyLoad 实现动态(懒)加载模块和依赖
2018/11/25 Javascript
jQuery 判断元素是否存在然后按需加载内容的实现代码
2020/01/16 jQuery
Django原生sql也能使用Paginator分页的示例代码
2017/11/15 Python
kaggle+mnist实现手写字体识别
2018/07/26 Python
python 求1-100之间的奇数或者偶数之和的实例
2019/06/11 Python
PyQt5通信机制 信号与槽详解
2019/08/07 Python
Python魔法方法 容器部方法详解
2020/01/02 Python
Python实现链表反转的方法分析【迭代法与递归法】
2020/02/22 Python
Python ATM功能实现代码实例
2020/03/19 Python
python爬虫scrapy基本使用超详细教程
2021/02/20 Python
Ryderwear澳洲官网:澳大利亚高端健身训练装备品牌
2018/09/18 全球购物
澳大利亚音乐商店:Bava’s Music City
2019/05/05 全球购物
计算机系毕业生推荐信
2013/11/06 职场文书
QA工程师岗位职责
2013/11/20 职场文书
雷锋式好少年事迹材料
2014/08/17 职场文书
镇党委书记群众路线整改措施思想汇报
2014/10/13 职场文书
生死牛玉儒观后感
2015/06/11 职场文书
小学学习委员竞选稿
2015/11/20 职场文书
vue实现无缝轮播效果(跑马灯)
2021/05/14 Vue.js
5种方法告诉你如何使JavaScript 代码库更干净
2021/09/15 Javascript