Ответ 1
Самообучающийся API JSON
В самодостаточном API JSON вы определяете некоторые функции в некоторых автономных функциях контроллера, а затем прокладываете функциональные возможности, чтобы выразить их после факта. В качестве примера можно использовать приложение библиотеки:
books.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
}
}
к http.js
В этом файле мы создаем функцию, которая преобразует функцию контроллера в маршрут HTTP. Мы берем параметры запроса и передаем это нашему контроллеру в качестве параметров:
module.exports = function toHTTP (func) {
return function (req, res) {
func(req.params).then(function (data) {
res.send(data)
})
}
}
router.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 blog codebase. Это очень информативное чтение.