restifyNode.js的模块。虽然restify的API或多或少的参考了express,但restify不是一个MVC框架,它是一套为了能够正确构建REST风格API而诞生的框架。

###安装restify

restify安装到目录restify-dmeo

$ mkdir restify-demo
$ cd restify-demo
$ npm install restify

###Hello World

var restify = require('restify');

function respond(req, res, next) {
res.send('hello ' + req.params.name);
} var server = restify.createServer();
server.get('/hello/:name', respond); server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});

保存文件并执行

$ node app.js
restify listening at http://0.0.0.0:8080

通过curl命令测试,服务器返回HTTP状态码200和一个application/json类型的内容(事实上这里不是)

$ curl -is http://localhost:8080/hello/roy
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Access-Control-Allow-Headers: Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version
Access-Control-Expose-Headers: X-Api-Version, X-Request-Id, X-Response-Time
Server: restify
X-Request-Id: ec3e9e55-7083-4e12-93ee-9c24a0c5c398
Access-Control-Allow-Methods: GET
Connection: close
Content-Length: 5
Content-MD5: 65tW24XBT3r1jLUpw0o0Fw==
Content-Type: application/json
Date: Sun, 19 Feb 2012 16:14:13 GMT
X-Response-Time: 3 "hello roy"

###特性 接触到restify是因为内部系统需要一个手机归属地的查询接口,基于nodejsredis的高性能实现,决定快速实现一个,当时也很自然地选择了express作为web层。但express始终是一个Web MVC框架,它包含了一些我不太需要的功能实现(i.e., templating/rendering)。而我只是需要一个更纯粹的API接口而已–接收请求然后返回一个JSON结果集。

后来从推上找到了restify时,我就觉得这才是我想要的:

  1. 路由

    • 基本等同于express/sinatra的路由方式
    • 路由正则表达式支持
    • 版本化支持
  2. 自动选择内容格式进行响应,并可以自定义格式

  3. 内置REST风格的错误处理机制,重载了400和409来解析应答,得到一个包含codemessage的JSON对象。也可以子类化restify.RestError实现自己错误代码和信息。

    已实现的RestError:

    • RestError
    • BadDigestError
    • BadMethodError
    • InternalErrorError
    • InvalidArgumentError
    • InvalidContentError
    • InvalidCredentialsError
    • InvalidHeaderError
    • InvalidVersionError
    • MissingParameterError
    • NotAuthorizedError
    • RequestExpiredError
    • RequestThrottledError
    • ResourceNotFoundError
    • WrongAcceptError
  4. 插件机制

  5. DTrace支持,这个绝对是调式、诊断和性能测量利器

虽然现在restify还是初生婴儿,我还是把上面提到的手机归属地查询接口改用了restify来实现了一个moquery

正如官方描述一样

restify is a smallish framework, similar to `express` for building REST APIs.

node-restify简介的更多相关文章

  1. 01 Node.js简介, 安装&配置

    Node.js 简介 Node.js 是什么 Node.js 有着强大而灵活的包管理器(node package manager,npm) 目前, 已经有强大第三方工具模块, 例如数据库连接, 网站开 ...

  2. 《React Native 精解与实战》书籍连载「Node.js 简介与 React Native 开发环境配置」

    此文是我的出版书籍<React Native 精解与实战>连载分享,此书由机械工业出版社出版,书中详解了 React Native 框架底层原理.React Native 组件布局.组件与 ...

  3. node.js 简介

    简介:     Node,是一个可以让 JavaScript 运行在服务器端的平台.它可以让 JavaScript 脱离浏览器的束缚运行在一般的服务器环境下     Node.js 是一个为实时Web ...

  4. 写给Java开发者的Node.JS简介

    前言 今天上推特看见这篇文章,点进去发现是新货. 正好最近想入Node的坑,又有一些Java基础,所以希望翻译出来给大家,同时也让自己加深理解. 才疏学浅,如有不妥之处请指正. 原文链接:Node f ...

  5. 一起来学node.js吧 node school简介

    node.js这几年火爆的简直丧心病狂,去lagou.com查查node.js的职位,那叫一个多. 要说火爆到什么程度,竟然有一个网站专门去教大家学习node.js, Node School. 进去逛 ...

  6. Node.js简介

    Node核心思想:1.非阻塞:2.单线程:3.事件驱动. 在目前的web应用中,客户端和服务器端之间有些交互可以认为是基于事件的,那么AJAX就是页面及时响应的关键.每次发送一个请求时(不管请求的数据 ...

  7. node.js入门系列(一)--Node.js简介

    什么是NodeJS JS是脚本语言,脚本语言都需要一个解析器才能运行.对于写在HTML页面里的JS,浏览器充当了解析器的角色.而对于需要独立运行的JS,NodeJS就是一个解析器. 每一种解析器都是一 ...

  8. 【个人笔记】《知了堂》node.js简介及创建应用

    Node.js是什么? Node.js是建立在谷歌Chrome的JavaScript引擎(V8引擎)的Web应用程序框架.Node.js自带运行时环境可在Javascript脚本的基础上可以解释和执行 ...

  9. Node.js学习(第一章:Node.js简介)

    Node.js是什么? Node.js 诞生于 2009 年,由 Joyent 的员工 Ryan Dahl 开发而成, 目前官网最新版本已经更新到 12.0.0版本,最新稳定的是10.15.3.Nod ...

  10. Node的简介

    从开始学习node到现在已经有半年多了,中间没有做过什么实际工作中的项目,所以感觉自己的知识有些匮乏,但是我还是要写这些文章,因为工作中的需要用node来开发后台环境,再加上我对这些知识记得不多,都是 ...

随机推荐

  1. 如何对具有端点加密功能的LINE进行取证

    LINE又有新动作了,这回默认即启用了端点加密功能,强调确保传输过程的安全,且让我们来看看如何对付新版的LINE. 有启用Letter Sealing就会在昵称前多个锁头的图像. 这手机据犯嫌供称,落 ...

  2. JAVA基础_字符串、访问属性

    1.字符串   String s = new String(“123”)不如String s = “123”效率高.   字符串连接操作StringBuilder效率比较高.   StringBuff ...

  3. xfire配置(java中的webservice)

    开发时需要在src中新建META-INF=>xfire=>services.xml 这样编译出来就在classes文件夹下. services.xml配置 <?xml version ...

  4. jqeury 合并单元格

    function mergeCells() { var tbodyTlth = $("#datatable_ajax1 tbody").find("tr").l ...

  5. machine learning----->什么是机器学习

    1.概述: 学习一门学问的第一步就是要了解这门学问到底是什么,它可以被用来干什么. 本文罗列了学习machine learning的过程中看到的一些写得比较好的文章以及读完这些文章之后对机器学习的初步 ...

  6. C盘实际占用容量比显示的要少

    1.问题 服务器是Window Server 2008 R2,就几天时间,60G的C盘容量一下子满了,选中所有的文件,占用才20多G. 2.原因 1).有的文件没有系统管理员权限,大小不会显示出来. ...

  7. arm上的参数列表传递的分析(以android为例)

    1. Linux中可变列表实现的源码分析 查看Linux0.11的内核源代码,对va_list, va_start, va_arg 的实现如下: va_list的实现没有差别,chartypedef ...

  8. java代码性能优化总结(转载)

    原文链接:http://developer.51cto.com/art/201511/496263.htm 前言 代码优化,一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改 ...

  9. cookie 的“Value”=“xxxxx,xxxxx”部分无效

    cookie 的“Value”=“xxxxx,xxxxx”部分无效 在一些网站中有时候会遇到Cookie的值为逗号 但是在.Net中Cookie的值是不能直接使用逗号的 如果使用形如 C#代码 1.C ...

  10. linux上安装jdk并添加环境变量

    ==========ubuntu============================= http://www.oracle.com/technetwork/java/javasebusiness/ ...