Node.js 如何在SENECAWebforRESTAPI中使用路由?

Node.js 如何在SENECAWebforRESTAPI中使用路由?,node.js,rest,express,seneca,Node.js,Rest,Express,Seneca,我想用SENECAWeb(express)创建RESTAPI。我找不到其中使用的routes文件的任何(完整)文档。我以一为基数。假设我有一个名为Task的资源。我想要这些http方法: 获取/任务 GET/tasks/:taskId 职位/任务 下面是routes.js: module.exports = [ { prefix: '/tasks', pin: 'role:api,path:*', map: { all: { GET:

我想用SENECAWeb(express)创建RESTAPI。我找不到其中使用的routes文件的任何(完整)文档。我以一为基数。假设我有一个名为Task的资源。我想要这些http方法:

  • 获取/任务
  • GET/tasks/:taskId
  • 职位/任务
下面是routes.js:

module.exports = [
  {
    prefix: '/tasks',
    pin: 'role:api,path:*',
    map: {
      all: {
        GET: true,
        prefix: ''
      },
      ':taskId': {
        GET: true
      }

    }
  },
  {
    pin: 'role:api,path:*',
    map: {
      tasks: {
        POST: true
      }

    }
  }
]
我的seneca插件用于处理:

module.exports = function task (options) {
  this.add({role: 'api', path: 'all'}, function (msg, respond) {
    console.log(msg)
    this.act('role:task,cmd:all', respond)
    respond(null, [{name: 'First Task', description: 'Description of     the First Task'}])
  })
  this.add({role: 'api', path: '*'}, function (msg, respond) {
    console.log(msg)
    this.act('role:task,cmd:single', {taskId: msg.args.params.taskId}, respond)
  })
}
  • 我不知道如何在这里分开帖子和采取行动
  • 我还发现,路由的map对象中的键作为路径的一部分存在问题,例如GET/tasks/all而不是GET/tasks

谢谢你的帮助

下面是塞内卡网站的示例

==========index.js=======

const seneca = require('seneca')()
const express = require('express')()
const web = require('seneca-web')
const cors = require('cors')

var Routes = [{
  prefix: '/products',
  pin: 'area:product,action:*',
  map: {list: {GET: true}}
}]
express.use(cors())
var config = {
  routes: Routes,
  adapter: require('seneca-web-adapter-express'),
  context: express,
  options: {parseBody: true}
}
seneca.client()
.use(web, config)
.ready(() => {
  var server = seneca.export('web/context')()
  server.listen('8082', () => {
    console.log('server started on: 8082')
  })
})
seneca.add({area: 'product', action: 'list'}, function (args, done) {
  try {
    done(null, {response: 'Product List'})
  } catch (err) {
    done(err, null)
  }
})
使用以下命令启动应用程序: node index.js

在浏览器中打开链接

你明白了吗?@aman_新手是的,我在那里使用了别名,但我不喜欢将Seneca与express.js集成:)我希望你是在使用Seneca开发使用微服务架构的应用程序。你能推荐你选择的替代路线吗?@aman_新手是的,但该路线是针对系统的外部API(针对某些浏览器客户端的REST API)。问题是对资源路径使用公共命名。你希望得到什么建议?因为我不知道我是否解决了你的问题?这不是问题中的问题。我基本上知道如何配置seneca。