浅析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的链式调用浅析
Dec 03 Javascript
suggestion开发小结以及对键盘事件的总结(针对中文输入法状态)
Dec 20 Javascript
用JQuery在网页中实现分隔条功能的代码
Aug 09 Javascript
jquery实现鼠标拖动图片效果示例代码
Jan 09 Javascript
jquery.form.js框架实现文件上传功能案例解析(springmvc)
May 26 Javascript
JS基于面向对象实现的拖拽功能示例
Dec 20 Javascript
JavaScript中object和Object的区别(详解)
Feb 27 Javascript
node.js+express+mySQL+ejs+bootstrop实现网站登录注册功能
Jan 12 Javascript
对angularJs中2种自定义服务的实例讲解
Sep 30 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
vue router返回到指定的路由的场景分析
Nov 10 Javascript
node.js 基于 STMP 协议和 EWS 协议发送邮件
Feb 14 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
破解.net程序(dll文件)编译和反编译方法
2013/01/31 PHP
PHP 冒泡排序 二分查找 顺序查找 二维数组排序算法函数的详解
2013/06/25 PHP
php实现快速排序的三种方法分享
2014/03/12 PHP
php的declare控制符和ticks教程(附示例)
2014/03/21 PHP
php动态读取数据清除最右边距的方法
2017/04/12 PHP
用window.location.href实现刷新另个框架页面
2007/03/07 Javascript
jQuery EasyUI API 中文文档 - DataGrid数据表格
2011/11/17 Javascript
Js参数值中含有单引号或双引号问题的解决方法
2013/11/06 Javascript
Js 导出table内容到Excel的简单实例
2013/11/19 Javascript
JavaScript输入邮箱自动提示实例代码
2014/01/13 Javascript
原生js和jQuery写的网页选项卡特效对比
2015/04/27 Javascript
浅谈javascript中基本包装类型
2015/06/03 Javascript
JavaScript获取客户端IP的方法(新方法)
2016/03/11 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
Vue.js划分组件的方法
2017/10/29 Javascript
javaScript日期工具类DateUtils详解
2017/12/08 Javascript
jQuery基于随机数解决中午吃什么去哪吃问题示例
2018/12/29 jQuery
JavaScript偏函数与柯里化实例详解
2019/03/27 Javascript
Vue Cli 3项目使用融云IM实现聊天功能的方法
2019/04/19 Javascript
探索Python3.4中新引入的asyncio模块
2015/04/08 Python
Python中类的定义、继承及使用对象实例详解
2015/04/30 Python
通过源码分析Python中的切片赋值
2017/05/08 Python
使用Python的Django和layim实现即时通讯的方法
2018/05/25 Python
Python unittest模块用法实例分析
2018/05/25 Python
python实现Dijkstra静态寻路算法
2019/01/17 Python
对Python的多进程锁的使用方法详解
2019/02/18 Python
python爬取内容存入Excel实例
2019/02/20 Python
python文件读取失败怎么处理
2020/06/23 Python
python解压zip包中文乱码解决方法
2020/11/27 Python
中专生职业生涯规划书范文
2014/01/10 职场文书
小学语文教研活动总结
2014/07/01 职场文书
体育专业求职信
2014/07/16 职场文书
2015大学生实训报告
2014/11/05 职场文书
医疗纠纷调解协议书
2015/08/06 职场文书
求职信如何撰写?
2019/05/22 职场文书
写给汽车4S店的创业计划书,拿来即用!
2019/08/09 职场文书