我想知道是否有人使用了与sailsjs的ext-direct。如果您有或任何知道如何的人,请指导我。
谢谢。
以下是一些例子
在常规nodejs / express应用程序中,我会在我的app.js文件中正常执行此操作
app.get(ExtDirectConfig.apiPath, function (request, response) {
try {
var api = extdirect.getAPI(ExtDirectConfig);
response.writeHead(200, {'Content-Type': 'application/json'});
response.end(api);
} catch (e) {
console.log(e);
}
});
// Ignoring any GET requests on class path
app.get(ExtDirectConfig.classPath, function (request, response) {
response.writeHead(200, {'Content-Type': 'application/json'});
response.end(JSON.stringify({success: false, msg: 'Unsupported method. Use POST instead.'}));
});
// POST Request process route and calls class
app.post(ExtDirectConfig.classPath, db, function (request, response) {
extdirect.processRoute(request, response, ExtDirectConfig);
});
我将如何在sails.js中执行此操作
编辑:谢谢@Scott Gress。查看我的代码之后,没有必要传递db对象(是的,它是一个中间件),因为它已经将自己附加到请求对象。谢谢。
谢谢。
答案 0 :(得分:1)
最简单的方法是使用Sails的customMiddleware
配置选项。此选项允许您提供一个函数,该函数将接收底层Express应用程序作为其唯一参数,您可以向其添加自己的路由或中间件。查找或创建 config / express.js 文件,并输入以下内容:
// First, do all requires / setup necessary so that
// `extdirect` and `ExtDirectConfig` exist, then:
module.exports.express = {
customMiddleware: function(app) {
app.get(ExtDirectConfig.apiPath, function (request, response) {
try {
var api = extdirect.getAPI(ExtDirectConfig);
response.writeHead(200, {'Content-Type': 'application/json'});
response.end(api);
} catch (e) {
console.log(e);
}
});
// Ignoring any GET requests on class path
app.get(ExtDirectConfig.classPath, function (request, response) {
response.writeHead(200, {'Content-Type': 'application/json'});
response.end(JSON.stringify({success: false, msg: 'Unsupported method. Use POST instead.'}));
});
// POST Request process route and calls class
app.post(ExtDirectConfig.classPath, db, function (request, response) {
extdirect.processRoute(request, response, ExtDirectConfig);
});
}
}
更复杂但最终可重用的策略是为ExtDirect创建自定义“钩子”或Sails插件。自定义挂钩的文档正在开发中here。