为Keystone使用设置API端点的正确方法是什么?

时间:2015-03-20 19:54:57

标签: keystonejs

在文档中不清楚如何使用现有的Keystone模型来公开在Keystone.js应用程序中返回json的API端点。我希望能够使用Keystone公开REST API端点,并能够使用Keystone CMS功能通过与这些端点交互来管理内容。谢谢!

2 个答案:

答案 0 :(得分:5)

现在他们已经标准化了管理API,我发现使用相同的方法非常简单。对于我的只读API,它为我的反应应用程序提供动力,我已经在我的routes / index.js中添加了这样的东西

router.get('/api/:list/:format(export.csv|export.json)',middleware.initList,require('keystone/admin/server/api/list/download'));

我已经创建了自己的admin initList中间件版本:

exports.initList = function(req, res, next) {
  console.log('req.keystone', req.keystone);
  req.keystone = keystone;
  req.list = keystone.list(req.params.list);
  if (!req.list) {
    if (req.headers.accept === 'application/json') {
      return res.status(404).json({ error: 'invalid list path' });
    }
    req.flash('error', 'List ' + req.params.list + ' could not be found.');
  }
  next();
};

答案 1 :(得分:3)

您可以考虑使用:

我从未真正使用其中任何一个,因为我有自己的实现,一旦Keystone实现了插件架构,我将开源(参见Keystone Issue #912: Proposed Keystone Package Architecture)。

我怀疑许多其他类似的模块会在Keystone更多"插件友好"开始浮出水面。