论Node在构建超媒体API中的作用

论Node在构建超媒体API中的作用

作者:chszs,转载需注明。

博客主页:http://blog.csdn.net/chszs

超媒体即Hypermedia,是一种採用非线性网状结构对块状多媒体信息(包含文本、图像、视频等)进行组织和管理的技术。超媒体的概念类似于早期的超文本。超文本的本质是在文本内容加上链接。这样就构成了超文本。超媒体也类似。

不管是超媒体还是超文本。使用的传输协议都是HTTP,这意味着超媒体能够被全部的浏览器所接受。

而描写叙述超媒体的类型我们使用MIME。

MIME即Multipurpose Internet Mail Extensions,多用途互联网邮件扩展类型,MIME是一个互联网标准,最早是应用于电子邮件系统的。后来其定义逐步应用到互联网领域。

用MIME指定媒体的类型。那么client浏览器就能清楚地知道,该怎样处理这样的类型的媒体。

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操纵能力,在client或server端都能够使用。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是非常easy的。

不得不说。《使用HTML5和Node构建超媒体API》这本书翻译的太生硬了,阅读时感觉不畅快。可是,这本书本身还是非常有价值的。由于实现超媒体的RESTful API这样的需求非经常见,能够说是Web开发人员的必备技能之中的一个。重复阅读,揣摩其内涵,是我对此书读者的一点小小建议。

时间: 01-21

论Node在构建超媒体API中的作用的相关文章

Spring MVC中使用 Swagger2 构建Restful API

1.maven依赖 <!-- 构建Restful API --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.0</version> </dependency> <dependency> <groupId>io.spr

nodejs api 中文文档

文档首页 英文版文档 本作品采用知识共享署名-非商业性使用 3.0 未本地化版本许可协议进行许可. Node.js v0.10.18 手册 & 文档 索引 | 在单一页面中浏览 | JSON格式 目录 关于本文档 稳定度 JSON 输出 概述 全局对象 global process console 类: Buffer require() require.resolve() require.cache require.extensions __filename __dirname module e

微服务构建持久 API 的7大规则

近年来,微服务架构发展迅速,SparkPost 就是早期落地微服务架构公司之一,他们发现落地微服务过程中,不光需要考虑服务发现.服务注册.服务调用跟踪链等等架构问题,也需要重视微服务 API 的变更管理.微服务的一大特性就是独立发布,快速迭代,但前提是足够稳定,他们在使用微服务构建API的过程中就遇到很多问题: 客户(微服务使用方)经常反馈 API 升级变更后不可用,有时影响范围不可控,导致该微服务上线延期,甚至线上故障,违背了微服务初衷. API 参数变化或返回结果变化而导致客户端行为不一致,

《Spring实战》读书笔记--使用SpringMVC构建REST API

<Spring实战>读书笔记--使用SpringMVC构建REST API 1. REST介绍 REST(Representational State Transfer):表述性状态转移,是基于HTTP.URI.MIME(HTML.JSON等)协议的Web软件架构.它不同于SOAP Web服务(RPC)关注处理,面向行为,其更关注要处理的数据,面向资源. 1.1 <Spring实战>中是这样描述REST的: 为了理解REST是什么,我们将它的首字母缩写才拆分为不同的构成部分: 表述

springboot集成swagger2构建RESTful API文档

在开发过程中,有时候我们需要不停的测试接口,自测,或者交由测试测试接口,我们需要构建一个文档,都是单独写,太麻烦了,现在使用springboot集成swagger2来构建RESTful API文档,可以在访问接口上,直接添加注释 先介绍一下开发环境: jdk版本是1.8 springboot的版本是1.4.1 开发工具为 intellij idea 我们先引入swagger2的jar包,pom文件引入依赖如下: <dependency> <groupId>io.springfox&

Node.js实现RESTful api,express or koa?

文章导读: 一.what's RESTful API 二.Express RESTful API 三.KOA RESTful API 四.express还是koa? 五.参考资料 一.what's RESTful API 1.1 RESTful架构 要理解什么是RESTful API我们可以先看一下什么是RESTful架构. REST是Representational State Transfer的缩写,我们可以理解为它的含义是“表现层状态转化”,wikipedia是这样说的:“an archi

Windows API中的数据结构

值得说明的是,win32开发是C语言编程,因此,搞明白数据类型还是非常重要的.Windows API因为历史原因或者为了方便在windows.h中将一些数据类型用typedef或者define宏重新进行定义. UINT表示C语言中的无符号整型unsigned int PSTR表示字符串指针char * WPARAM在16位时期的Windows中表示unsigned short int,而现在都是UINT LPARAM表示long WndProc函数的返回类型LRESULT实际上就是long 入口

Asp.Net Web Api 中的异常处理

本文主要参考:http://www.asp.net/web-api/overview/error-handling/exception-handling 1.如果一个Web API控制器抛出未捕获的异常,默认情况下,大多数异常转换成HTTP响应状态码500内部服务器错误.  HttpResponseException类型是一个特例.这个异常返回任何HTTP状态代码中指定异常构造函数.例如,下面的方法如果参数id是无效的,请求将返回404. public Product GetProduct(in

spring boot 1.5.4 集成Swagger2构建Restful API(十八)

上一篇博客地址:springboot 1.5.4 整合rabbitMQ(十七) 1      Spring Boot集成Swagger2构建RESTful API文档 1.1  Swagger2简介 Swagger2官网:http://swagger.io/ 由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会