首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何为rest使用seneca中的路由?

如何为rest使用seneca中的路由?
EN

Stack Overflow用户
提问于 2017-02-12 08:38:24
回答 1查看 819关注 0票数 0

我想用seneca(速成)创建rest。我找不到它中使用的路由文件的任何(完整)文档。我的基地是一个这些例子。假设我有一个名为Task的资源。我想要这些http方法:

  • 获取/tasks
  • 获取/任务/:taskId
  • POST /tasks

以下是routes.js:

代码语言:javascript
复制
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插件用于处理:

代码语言:javascript
复制
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)
  })
}
  • 我不知道如何分开张贴和在这里采取行动。
  • 我还发现,路径地图对象中的键作为路径的一部分也是有问题的,例如。获取/任务/全部,而不是获取/tasks。

谢谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2017-08-17 04:25:32

以下是带有路由的seneca-web示例

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

代码语言:javascript
复制
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)
  }
})

使用命令启动应用程序:节点index.js

打开浏览器http://localhost:8082/products/list中的链接

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42185669

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档