基于NodeJS平台搭建REST风格Web服务
黄扬子
【摘 要】Nodejs now can be said to be one of the hottest technology,it is a server-side JavaScript execution environment, the goal is to help programmers to build high scalability,can handle tens of thousands of concurrent requests of applications.Due to its compact and lfexible characteristics,it is suitable for used to construct a restful web service especially.This paper focuses on how the Web service based on the NodeJS platform architecture REST style.%NodeJS如今可谓是最火热的技术之一,是一个服务器端的JavaScript执行环境,目标是帮助程序员构建高度可伸缩性,能够处理数万条并发请求的应用程序。由于其小巧灵活的特点,特别适合用构建REST风格的Web服务。文章重点阐述如何基于NodeJS平台搭建REST风格的Web服务。
【期刊名称】《无线互联科技》
【年(卷),期】2015(000)016
【总页数】3页(P57-59)js原型和原型链的理解
【关键词】NodeJS;REST;Web服务
【作 者】黄扬子
【作者单位】华北电力大学控制与计算机工程学院,北京 102206
【正文语种】中 文
REST是Resentational State Transfer的缩写,译为表述性状态转移。架构风格设计思想来源于HTTP1.1协议的设计原理。由Roy Fielding于2000年在自己的博士论文中首先提出来的。Fielding将REST视为一种有助于传达蕴含于web中的基本概念的方式。其中最关键的几个概念就是资源(Resource)、表述(Representation)和状态(State)。资源可以是任何事物,既可以是一个实物,也可以是一个抽象的概念,只要这个事物需要被引用,就可以抽象为一个资源。表述是一个资源当前状态的有用的信息。REST中状态分为资源状态和应用状态:资源状态是关于资源的信息,保存在服务端;应用状态是客户端在应用中所处状态的信息,由各个客户端自己维护。
RESTful Web服务即为符合REST架构风格的Web服务。REST风格强调以资源为中心,使用统一的操作接口和描述符,分层和无状态的交互,RESTful Web服务具有一些4个特征。
(1)以通过URL定位的资源的方式提供服务。RESTful Web服务以资源的方式对外发布服务,这些资源的URL是资源的唯一定位描述符。(2)使用HTTP标准方法操作资源。所有对资源的操作必须使用HTTP标准方法进行,主要是指POST,PUT,GET,DELETE方法,分别对应资源的新建、修改、查询和删除,每次对资源的访问只能进行增删改查四种操作之一,每个请求具有明确的行为语义。(3)资源通过自描述信息表示。为降低客户端和服务端的耦合,服务端可以提供多种资源描述方式来描述资源,如XML或JSON,通过客户端请求报文包含的数据类型返回所需要的信息格式。(4)超媒体为应用状态的引擎(Hypermedia As The Engine Of Application State,HATEOAS)。服务端满足无状态性的要求,即客户端和服务端交互的信息必须包含上下文信息,服务端不保留客户端的任何状态信息,必须通过自描述的文件格式进行交互。客户端在获取资源的超媒体描述后,根据其中的超链接,决定进行进下一步的行为。应用的状态信息只与当前请求的资源地址有关,而与交互上下文无关。
相比传统的RPC模式的Web服务,REST风格提出了一组相互协作的架构约束,这些约束限制了架构元素的角和功能,以及在任何一个遵循该风格的架构中的允许存在的元素之间的关系,这些约束给REST架构带来了一些架构属性,而这些架构属性恰恰是REST较RPC模式在扩展性、耦合性、可寻址、连通性等方面更有优势的体现。
2.1 NodeJS介绍
NodeJS是Ryan Dahl于2009年发起的开源项目,是一个基于Chrome V8引擎的JavaScript执行平台,它可以快速构建网络服务及相关应用。Chrome V8引擎使用了一些最新的编译技术,这使得用JavaScript这类脚本语言编写出来的代码运行速度获得了极大的提升。NodeJS对一些特殊方法和模块进行细化和调优,提供了可替代的超越Ruby on Rails,成为GitHub上关注度最高的项目。应用接口API,简单高效。NPM是Node的包管理器,管理着数万基于Node平台的第三方开发库,NPM允许开发者自由上传自己编写的程序库。NodeJS算是如今最火热的技术之一,曾一度。
NodeJS作为服务器端JavaScript的运行平台,弱类型、基于作用域和原型链依旧是其本身的特征,重点在于将Web前端中一些思想,比如事件机制等迁移到了服务端的环境。相较于其
他的服务器端编程语言,NodeJS的主要特点如下:
异步非阻塞I/O。这是NodeJS的主要特性,是其处理高并发请求的秘诀所在。NodeJS在底层构建了很多异步I/O的API,可以很自然很方便的调用这些API进行异步操作,每个调用之间无需等待,操作结束后通过回调进行数据处理。相对于同步I/O,异步编程模型可以提升效率。(2)单线程。NodeJS和浏览器端的JavaScript一样保持了单线程的特点。单线程的好处是无需考虑多线程下的状态同步,上下文切换,死锁,线程安全等方面的问题。(3)事件机制。事件的编程方式已经在前端得到了广泛的应用和肯定,因此NodeJS将浏览器中常见且成熟的事件引入后端,配合异步I/O操作,具有轻量级,松耦合,只关注事务点等优势。
借助事件驱动,异步非阻塞I/O等特性,对于数据密集型,I/O密集型的应用场景有着优秀的处理能力,广泛应用于当前流行的云计算平台。
2.2 Express框架
Express是一个高效而强大的NodeJS技术平台下的Web应用框架,提供各种使用功能特性帮助快速构建Web应用。使用功能全面的Connect框架作为中间件,使得建立功能强大的API变得快捷又容易。
本文将介绍使用NodeJS来构建一个开放的图片相册应用服务。
NodeJS是一种后端的JavaScript语言,和Java、python、ruby语言相似,都可以构建Web应用,不同点是构建的Web应用的实现模型不一样,NodeJS本身是基于异步非阻塞I/O模型,通过单线程的事件轮询机制实现高并发请求处理,这点非常适合于构建大型面向用户端的高并发Web应用,更重要的是NodeJS本身就可以创建HTTP服务器,而不需要借助像Apache、IIS这类辅助的执行容器,所以使用NodeJS来构建Web服务,可以有很棒的灵活性,伸缩性和扩展性,这点非常适合用来构建基于HTTP协议的REST风格Web服务。
时下设计REST风格Web服务最常用的2种数据结构即XML和JSON。相比较而言JSON(Javascript Object Notation)是一种更轻量级的数据交换格式,具有良好的可读性和便于快速编写的特性。JSON采用兼容性很高的、完全独立于语言文本格式,同时也具备类似于C语言的习惯(包括C,C++, C#,Java,Python等)体系的行为,并可在不同平台之间进行数据交换,这使得JSON是成为时下最为理想的数据交换语言。JSON是基于JavaScript Programming Language, Standard ECMA-262 3rd Edition-December 1999的一个子集,而NodeJS拥有完全的JavaScript语言特性,对JavaScript语法结构的完美支持,这使得NodeJ
S中的对象实例可以与JSON进行无缝对接转化,在构建RESTful Web服务方面有着天然的优势。下面对Web服务进行模块分析。
(1)基于NodeJS构建Web服务,需要构建一个HTTP服务器。(2)对于不同的HTTP请求,不同的请求方法,Web服务接口需要响应不同的结果,需要设计一个路由(Router),对请求进行转发,交给不同的请求处理程序(Request Handler)。(3)当HTTP请求被Router接收并转发后,需要对具体请求进行具体的处理,所以需要处理程序(Request Handler)。(4)同时为了更好的维护整个Web服务的启动和停止,需要设计启动文件(app.js),为程序的入口。
通过对REST设计原则的理解,可以确立RESTful服务设计原则有如下几点:
(1)URI是网络资源的唯一标识。(2)URL应该全部包含名词,不能包含动词。(3)URI应该具有语义化。(4)同一URI,不同的HTTP请求方法对应不同的资源处理操作。
依据这几点原则,结合分析具体的应用场景,对RESTful服务接口设计进行如表1所示。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。