Nodejs carcass 快速创建api server 的另一种选择

Nodejs carcass 快速创建api server 的另一种选择

carcass 框架是构建在express connect等模块上的一个restfull api 框架,封装了诸如 deferred等一些非常有用的框架,下面介绍如何使用carcass来快速建立一个node api server。

####0.扩展

carcass包含有几个很重要的特性

-mixable与mixin

例如

var obj = {};
carcass.mixable(obj);
obj.mixin({
     start: function() {
     }
})

mixable给一个对象添加mixin方法 mixin类似于一个扩展继承的概念

-register

obj.mixin(carcass.proto.register);
obj.register(path.resolve(__dirname, 'lib'));

通过register 我们就可以通过obj的属性来引用lib文件下的文件

-deferred

deferred 是JavaScript异步变同步的框架,将每步操作变成一个promise.

var deferred = carcass.deferred;
function save() {
    var def = deferred;
    /*
     *Do something then resolve or reject.
     */
     return def.promise;
 }

具体使用方法可以看deferred的文档.

####1.结构 carcass 主要的特性就是帮助开发者有效的控制项目的结构,所以引入了一个很重要的特性

carcass.register 对于我自己来说一个应用的结构可能会像这样的

|--api
| |--applications
| | |--auth.js
| | |--user.js
| | |--...
| |--lib
| | |--utils.js
| |--index.js
| 
|--auth
| |--lib
| | |--auth.js
| | |--user.js
| |--test
| | |--...
| |--index.js
| |--Makefile   
|--index.js
.....

如何快速得到api内的各个独立的api 一般的做法是类似这种

{
    var api = module.exports= {
        auth: require('applications/auth'),
        user: require('applications/user')
    }
}

使用carcass.register 我们就可以很简单的使用去export 一个api对象

var path = require('path');
var carcass = require('carcass');

var api = module.exports = carcass.mixable({ registerOptions: { noRecursive: true, noIndex: true } });

api.mixin(carcass.proto.register); api.register(path.resolve(__dirname, ‘applications’));

很方便的直接可以使用api.auth 或者api.user ,而且以后增删文件 无需更改index.js 如果有子文件夹还可以使用api.sub.sub.js这种格式,只要将noRecursive移出即可 注: carcass 内部是通过文件的路径来添加属性的 noRecursive 是否遍历子文件夹 noIndex 是否包含index.js

2.代码 写一个user的api 在root/api/applications/ 目录下添加一个user.js

var carcass = require('carcass');
var app = module.exports = carcass.express();

app.get(’/’, function(req, res, next) { return res.json(200, {hi: ‘carcass’}); });

app.get(’/:id’, function(req, res, next) { return res.json(200, {id: req.params.id}); });

app.get(’/test’, function(req, res, next) { return next(carcass.httpError(501)); });

和express 的api书写方式一样 在root/ 下添加一个index.js

var http = require('http');
var carcass = require('carcass');
var app = carcass.express();
var api = require('./api');

app.use('/user', api.user);

http.createServer(app).listen(3000);

运行node index.js 访问 http://127.0.0.1:3000/user 会返回 {hi: 'carcass'}

一个简单的api server 就搭建成功了

原文在我的博客上 http://www.xeodou.me/2013/09/09/carcass-api-server/


5 回复

Nodejs carcass 快速创建API Server 的另一种选择

carcass 框架是基于 Express 和 Connect 构建的一个 RESTful API 框架,它封装了一些非常有用的工具,如 deferred 等。本文将介绍如何使用 carcass 来快速搭建一个 Node.js API 服务器。

0. 扩展

carcass 包含几个重要的特性:

  • mixable 与 mixin

    mixable 方法允许一个对象添加 mixin 方法,而 mixin 类似于一种扩展继承的概念。

    var obj = {};
    carcass.mixable(obj);
    obj.mixin({
        start: function() {
            // 实现 start 方法
        }
    });
    
  • register

    register 方法可以帮助我们通过对象的属性来引用指定目录下的文件。

    obj.mixin(carcass.proto.register);
    obj.register(path.resolve(__dirname, 'lib'));
    
  • deferred

    deferred 是一个用于 JavaScript 异步编程的库,它可以将每步操作变成一个 Promise。

    var deferred = carcass.deferred;
    function save() {
        var def = deferred;
        /*
         * Do something then resolve or reject.
         */
        return def.promise;
    }
    

1. 结构

carcass 的主要特性之一是帮助开发者有效地控制项目的结构。它提供了一个关键特性 carcass.register

假设你的项目结构如下:

|--api
| |--applications
| | |--auth.js
| | |--user.js
| | |--...
| |--lib
| | |--utils.js
| |--index.js
|
|--auth
| |--lib
| | |--auth.js
| | |--user.js
| |--test
| | |--...
| |--index.js
| |--Makefile   
|--index.js
.....

你可以使用 carcass.register 来方便地导出 API 对象:

var path = require('path');
var carcass = require('carcass');

var api = module.exports = carcass.mixable({
    registerOptions: {
        noRecursive: true,
        noIndex: true
    }
});

api.mixin(carcass.proto.register);
api.register(path.resolve(__dirname, 'applications'));

这样你就可以直接使用 api.authapi.user,并且不需要修改 index.js 文件。

2. 代码

接下来,我们将编写一个简单的用户 API。

首先,在 root/api/applications/ 目录下创建一个 user.js 文件:

var carcass = require('carcass');
var app = module.exports = carcass.express();

app.get('/', function(req, res, next) {
    return res.json(200, { hi: 'carcass' });
});

app.get('/:id', function(req, res, next) {
    return res.json(200, { id: req.params.id });
});

app.get('/test', function(req, res, next) {
    return next(carcass.httpError(501));
});

然后,在 root/ 目录下创建一个 index.js 文件:

var http = require('http');
var carcass = require('carcass');
var app = carcass.express();
var api = require('./api');

app.use('/user', api.user);

http.createServer(app).listen(3000);

运行 node index.js,访问 http://127.0.0.1:3000/user 将返回 { hi: 'carcass' }。这表明一个简单的 API 服务器已经搭建成功了。

更多详细信息可以查看 carcass 文档deferred 文档


Nodejs carcass 快速创建API Server 的另一种选择

carcass 是一个基于 Express 和 Connect 构建的 RESTful API 框架。它提供了许多有用的工具,如 deferred,可以帮助你更方便地编写异步代码。本文将展示如何使用 carcass 快速搭建一个 Node.js API 服务器。

0. 扩展

carcass 包含几个重要的特性:

  • Mixable 与 Mixin

    mixable 方法允许你给一个对象添加 mixin 方法。mixin 类似于扩展继承的概念。

    var obj = {};
    carcass.mixable(obj);
    obj.mixin({
        start: function() {
            // Your logic here
        }
    });
    
  • Register

    使用 register 可以通过对象属性引用目录下的文件。

    obj.mixin(carcass.proto.register);
    obj.register(path.resolve(__dirname, 'lib'));
    
  • Deferred

    deferred 是一个用于处理异步代码的库,可以将异步操作变为同步形式。

    var deferred = carcass.deferred;
    
    function save() {
        var def = deferred;
        // Do something and resolve or reject
        return def.promise;
    }
    

1. 结构

carcass 提供了强大的项目结构控制功能。你可以使用 carcass.register 来自动加载目录下的文件。

var path = require('path');
var carcass = require('carcass');

var api = module.exports = carcass.mixable({
    registerOptions: {
        noRecursive: true,
        noIndex: true
    }
});

api.mixin(carcass.proto.register);
api.register(path.resolve(__dirname, 'applications'));

这样你可以方便地通过 api.authapi.user 来访问对应的 API。

2. 代码

假设你在 root/api/applications/ 目录下创建了一个 user.js 文件:

var carcass = require('carcass');
var app = module.exports = carcass.express();

app.get('/', function(req, res, next) {
    return res.json(200, { hi: 'carcass' });
});

app.get('/:id', function(req, res, next) {
    return res.json(200, { id: req.params.id });
});

app.get('/test', function(req, res, next) {
    return next(carcass.httpError(501));
});

root/ 目录下创建一个 index.js 文件:

var http = require('http');
var carcass = require('carcass');
var app = carcass.express();
var api = require('./api');

app.use('/user', api.user);

http.createServer(app).listen(3000);

运行 node index.js,然后访问 http://127.0.0.1:3000/user,你将看到 { hi: 'carcass' } 的响应。

通过这种方式,你可以快速搭建一个功能齐全的 API 服务器。

回到顶部