浅析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 相关文章推荐
让焦点自动跳转
Jul 01 Javascript
jquery实现邮箱自动补全功能示例分享
Feb 17 Javascript
JavaScript中如何通过arguments对象实现对象的重载
May 12 Javascript
js表单处理中单选、多选、选择框值的获取及表单的序列化
Mar 08 Javascript
浅析创建javascript对象的方法
May 13 Javascript
JS组件Bootstrap Table使用实例分享
May 30 Javascript
简单的vue-resourse获取json并应用到模板示例
Feb 10 Javascript
基于vue.js快速搭建图书管理平台
Oct 29 Javascript
js中的 || 与 && 运算符详解
May 24 Javascript
vue移动端实现手机左右滑动入场动画
Jun 17 Javascript
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
深入浅析JavaScript中的in关键字和for-in循环
Apr 20 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中强制下载文件的代码(解决了IE下中文文件名乱码问题)
2011/05/09 PHP
php中可能用来加密字符串的函数[base64_encode、urlencode、sha1]
2012/01/16 PHP
php采集文章中的图片获取替换到本地(实现代码)
2013/07/08 PHP
本地机apache配置基于域名的虚拟主机详解
2013/08/10 PHP
Laravel框架路由配置总结、设置技巧大全
2014/09/03 PHP
php使用pdo连接并查询sql数据库的方法
2014/12/24 PHP
PHP实现数组和对象的相互转换操作示例
2019/03/20 PHP
基于jQuery的淡入淡出可自动切换的幻灯插件
2010/08/24 Javascript
Js切换功能的简单方法
2010/11/23 Javascript
javascript获取网页中指定节点的父节点、子节点的方法小结
2013/04/24 Javascript
模拟jQuery中的ready方法及实现按需加载css,js实例代码
2013/09/27 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
JavaScript数据绑定实现一个简单的 MVVM 库
2016/04/08 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
Bootstrap treeview实现动态加载数据并添加快捷搜索功能
2018/01/07 Javascript
vue移动端UI框架实现QQ侧边菜单组件
2018/03/09 Javascript
vue 下列表侧滑操作实例代码详解
2018/07/24 Javascript
node之本地服务器图片上传的方法示例
2019/03/26 Javascript
用Golang运行JavaScript的实现示例
2019/11/25 Javascript
vue实现在线预览pdf文件和下载(pdf.js)
2019/11/26 Javascript
jQuery实现图片切换效果
2020/10/19 jQuery
JS如何监听div的resize事件详解
2020/12/03 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
深入理解python中的闭包和装饰器
2016/06/12 Python
Tensorflow使用tfrecord输入数据格式
2018/06/19 Python
Python http接口自动化测试框架实现方法示例
2018/12/06 Python
python实现浪漫的烟花秀
2019/01/30 Python
python多环境切换及pyenv使用过程详解
2019/09/27 Python
使用pyshp包进行shapefile文件修改的例子
2019/12/06 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
世界上最大的高分辨率在线图片库:Alamy
2018/07/07 全球购物
西班牙在线光学:Visual-Click
2020/06/22 全球购物
优秀的2014年两会精神解读
2014/03/17 职场文书
社区班子个人对照检查材料思想汇报
2014/10/07 职场文书
Python GUI编程之tkinter 关于 ttkbootstrap 的使用详解
2022/03/03 Python
Python捕获、播放和保存摄像头视频并提高视频清晰度和对比度
2022/04/14 Python