浅析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 相关文章推荐
一个判断email合法性的函数[非正则]
Dec 09 Javascript
JavaScript使用setTimeout实现延迟弹出警告框的方法
Apr 07 Javascript
javascript中动态函数用法实例分析
May 14 Javascript
解决WordPress使用CDN后博文无法评论的错误
Dec 15 Javascript
基于JavaScript实现根据手机定位获取当前具体位置(X省X市X县X街道X号)
Dec 29 Javascript
基于jQuery的Web上传插件Uploadify使用示例
May 19 Javascript
AngularJs Injecting Services Into Controllers详解
Sep 02 Javascript
详解微信小程序——自定义圆形进度条
Dec 29 Javascript
常见的浏览器Hack技巧整理
Jun 29 Javascript
Angular客户端请求Rest服务跨域问题的解决方法
Sep 19 Javascript
Vue三种常用传值示例(父传子、子传父、非父子)
Jul 24 Javascript
浅谈鸿蒙 JavaScript GUI 技术栈
Sep 17 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防止网站被攻击的应急代码
2015/10/21 PHP
php 访问oracle 存储过程实例详解
2017/01/08 PHP
利用php-cli和任务计划实现刷新token功能的方法
2017/05/03 PHP
ThinkPHP3.1.x修改成功与失败跳转页面的方法
2017/09/29 PHP
JavaScript中Math对象使用说明
2008/01/16 Javascript
jQuery 方法大全方便学习参考
2010/02/25 Javascript
30个经典的jQuery代码开发技巧
2014/12/15 Javascript
javaScript的函数对象的声明详解
2015/02/06 Javascript
zepto中使用swipe.js制作轮播图附swipeUp,swipeDown不起效果问题
2015/08/27 Javascript
Ionic如何创建APP项目
2016/06/03 Javascript
微信QQ的二维码登录原理js代码解析
2016/06/23 Javascript
jQuery简单实现iframe的高度根据页面内容自适应的方法
2016/08/01 Javascript
微信小程序 Record API详解及实例代码
2016/09/30 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
原生JS实现轮播图效果
2018/10/12 Javascript
4 种滚动吸顶实现方式的比较
2019/04/09 Javascript
jquery实现简单每周轮换的日历
2020/09/10 jQuery
[52:09]2014 DOTA2华西杯精英邀请赛 5 25 NewBee VS DK第二场
2014/05/26 DOTA
Python smallseg分词用法实例分析
2015/05/28 Python
详解python单例模式与metaclass
2016/01/15 Python
完美解决python遍历删除字典里值为空的元素报错问题
2016/09/11 Python
用matplotlib画等高线图详解
2017/12/14 Python
python实现朴素贝叶斯分类器
2018/03/28 Python
Tensorflow 实现修改张量特定元素的值方法
2018/07/30 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
python合并已经存在的sheet数据到新sheet的方法
2018/12/11 Python
django处理select下拉表单实例(从model到前端到post到form)
2020/03/13 Python
Keras SGD 随机梯度下降优化器参数设置方式
2020/06/19 Python
Python数据可视化常用4大绘图库原理详解
2020/10/23 Python
css3的transform造成z-index无效解决方案
2014/12/04 HTML / CSS
如何查看浏览器对html5的支持情况
2020/12/15 HTML / CSS
GWebs公司笔试题
2012/05/04 面试题
行政执法作风整顿剖析材料
2014/10/11 职场文书
2016国庆节67周年寄语
2015/12/07 职场文书
2019年大学生暑期社会实践调查报告模板
2019/11/07 职场文书
python创建字典及相关管理操作
2022/04/13 Python