我用过这个:
var seneca = require('seneca')();
seneca.act('role:web',{use:{
prefix: '/cam',
pin: {role:'api',type:'*'},
map:{
asset: {GET:true,POST:true}
}
}});
seneca.add({role: "api",type: "asset"}, function(args, done) {
done(null, {response: "An example asset"});
});
var express = require('express');
var bodyparser = require('body-parser');
var web = require('seneca-web');
var app = express();
app.use(bodyparser.json());
app.use( web );
app.listen(3000);
当我尝试使用 POSTMAN url 调用 api 时,上面的示例给出以下错误:http://localhost:3000/cam/asset将 post param json 作为 {"role":"api","type":"asset" }
TypeError:无法在 Layer.handle [as handle_request] (C:\node_projects\node_modules\express\ lib\router\layer.js:95:5) 在 trim_prefix (C:\node_projects\node_modules\express\lib\router\index.js:312:13) 在 C:\node_projects\node_modules\express\lib\router\ index.js:280:7 在 Function.process_params (C:\node_projects\node_modules\express\lib\router\index.js:330:12) 在下一个 (C:\node_projects\node_modules\express\lib\router\index .js:271:10) 在 expressInit (C:\node_projects\node_modules\express\lib\middleware\init.js:33:5) 在 Layer.handle [as handle_request] (C:\node_projects\node_modules\express\lib \router\layer.js:95:5) 在 trim_prefix (C:\node_projects\node_modules\express\lib\router\index.js:312:13) 在 C:\node_projects\node_modules\express\lib\router\index.js:280:7
它还在控制台上打印以下 JSON。与未找到匹配的操作模式相关的内容。
{"err":{},"level":"warn","when":1481878030070} {"notice":"seneca: 找不到匹配的动作模式 { 使用: { 前缀: '/cam', pin: {角色:'api',类型:' '},地图:{资产:[Object],发票:[Object]}},角色:'web'},并且没有提供默认结果(使用默认$属性)。 ,"code":"act_not_found","err":{"eraro":true,"orig":null,"code":"act_not_found","seneca":true,"package":"seneca","msg ":"seneca: 找不到匹配的动作模式 { 使用: { 前缀: '/cam', pin: { role: 'api', type: ' ' }, map: {asset: [Object], invoice: [Object ] } }, 角色: 'web' },并且没有提供默认结果(使用 default$ 属性)。","details":{"args":"{ use: { prefix: '/cam', pin: { role: 'api', type: '' },地图:{ 资产:[Object],发票:[Object] } },角色:'web' }","plugin":{}},"callpoint":"at handle_inward_break (C:\node_projects\node_modules \seneca\seneca.js:1155:23)"},"actid":"gh3fzeqpdsp0/so5yjiwk3v1l","msg":{"use":{"prefix":"/cam","pin":{"role ":"api","type":" "},"map":{"asset":{"GET":true,"POST":true},"invoice":{"GET":true,"POST ":true}}},"role":"web","meta$":{"id":"gh3fzeqpdsp0/so5yjiwk3v1l","tx":"so5yjiwk3v1l"}},"meta":{},"listen ":false,"transport":{},"kind":"act","case":"ERR","duration":260,"level":"error","when":1481878030071}