自消费 JSON API
在自消费 JSON API 中,您在一些独立的控制器函数中定义一些功能,然后将这些功能连接起来以便在事后表达。让我们以库应用程序为例:
书籍.js
module.exports = {
browse: function () {
return Book.findAll()
},
read: function (options) {
return Book.findById(options.book)
},
processLateFees: function () {
// Do a bunch of things to process late fees
}
}
to-http.js
在这个文件中,我们构建了一个将控制器函数转换为 HTTP 路由的函数。我们获取查询参数并将其作为选项传递给我们的控制器:
module.exports = function toHTTP (func) {
return function (req, res) {
func(req.params).then(function (data) {
res.send(data)
})
}
}
路由器.js
然后我们将控制器连接到我们的 http 路由器
var express = require('express')
var books = require('./books')
var toHTTP = require('./to-http')
var app = express()
app.get('/books', toHTTP(books.browse))
app.get('/books/:book', toHTTP(books.read))
app.get('/batch-jobs/process-late-fees', toHTTP(books.processLateFees))
所以我们现在有一个连接到控制器功能的快速应用程序。奇妙的是,我们也可以手动调用这些控制器函数。
var books = require('./books')
books.processLateFees().then(function () {
// late fees have been processed
})
如果您需要更深入的示例,Ghost 博客代码库就是围绕这种模式构建的。这是一本内容丰富的读物。