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/
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.auth
或 api.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.auth
或 api.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 服务器。