浅析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 相关文章推荐
javascript学习笔记(九)javascript中的原型(prototype)及原型链的继承方式
Apr 12 Javascript
jquery ajax post提交数据乱码
Nov 05 Javascript
jQuery验证插件validation使用指南
Apr 21 Javascript
JS模拟键盘打字效果的方法
Aug 05 Javascript
JavaScript简单下拉菜单实例代码
Sep 07 Javascript
node.js连接MongoDB数据库的2种方法教程
May 17 Javascript
javascript中神奇的 Date对象小结
Oct 12 Javascript
基于vue实现网站前台的权限管理(前后端分离实践)
Jan 13 Javascript
JS弹窗 JS弹出DIV并使整个页面背景变暗功能的实现代码
Apr 21 Javascript
Vue实现底部侧边工具栏的实例代码
Sep 03 Javascript
解决vuejs项目里css引用背景图片不能显示的问题
Sep 13 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
May 12 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
图书管理程序(一)
2006/10/09 PHP
简体中文转换为繁体中文的PHP函数
2006/10/09 PHP
PHP 函数语法介绍一
2009/06/14 PHP
PHP依赖倒置(Dependency Injection)代码实例
2014/10/11 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
图片按比例缩放函数
2006/06/26 Javascript
javascript之大字符串的连接的StringBuffer 类
2007/05/08 Javascript
jquery 插件 任意位置浮动固定层
2008/12/25 Javascript
深入理解JavaScript系列(31):设计模式之代理模式详解
2015/03/03 Javascript
jQuery.Highcharts.js绘制柱状图饼状图曲线图
2015/03/14 Javascript
JavaScript实现LI列表数据绑定的方法
2015/08/04 Javascript
理解和运用JavaScript的闭包机制
2015/08/13 Javascript
javascript实现添加附件功能的方法
2015/11/18 Javascript
javascript html实现网页版日历代码
2016/03/08 Javascript
javascript验证手机号和实现星号(*)代替实例
2016/08/16 Javascript
Ajax和Comet技术总结
2017/02/19 Javascript
微信小程序 下拉菜单简单实例
2017/04/13 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
JS实现简单表格排序操作示例
2017/10/07 Javascript
angularJs提交文本框数据到后台的方法
2018/10/08 Javascript
clipboard在vue中的使用的方法示例
2018/10/19 Javascript
jquery层次选择器的介绍
2019/01/18 jQuery
详解javascript函数写法大全
2019/03/25 Javascript
说说如何利用 Node.js 代理解决跨域问题
2019/04/22 Javascript
js中的面向对象之对象常见创建方法详解
2019/12/16 Javascript
解决vue axios跨域 Request Method: OPTIONS问题(预检请求)
2020/08/14 Javascript
vue+element实现动态加载表单
2020/12/13 Vue.js
一个基于flask的web应用诞生 bootstrap框架美化(3)
2017/04/11 Python
django之session与分页(实例讲解)
2017/11/13 Python
Python常用模块sys,os,time,random功能与用法实例分析
2020/01/07 Python
python实现在线翻译
2020/06/18 Python
canvas实现圆形进度条动画的示例代码
2017/12/26 HTML / CSS
18-35岁旅游团的全球领导者:Contiki
2017/02/08 全球购物
什么是数据库锁?Oracle中都有哪些类型的锁?
2015/08/21 面试题
安全承诺书范文
2014/03/26 职场文书
2014年科室工作总结范文
2014/12/19 职场文书