express-api-controller

1.2.0 • Public • Published

express-api-controller

'use strict'
 
var path = require('path')
var app = require('express')()
var bodyParser = require('body-parser')
var expressValidator = require('express-validator')
var controller = require('express-api-controller')
var controllers = controller(path.resolve(__dirname, '../controllers'))
 
app.use(bodyParser.json())
app.use(bodyParser.urlencoded({ extended: true }))
app.use(expressValidator())
 
app
  .route('/api/v1/accounts')
    .get(controllers.api.v1.accounts.index)
    .post(controllers.api.v1.accounts.create)
 
app.listen(3000)
 
/**
 * Controller: accounts
 * Action:     create
 * Method:     POST
 * Path:       api/v1/accounts
 */
 
var Account = require('../models/account')
 
module.exports = {
 
  // Validattion middleware
  validations: function * (req, res, next) {
    req.checkBody('email', 'Invalid postparam').notEmpty().isEmail()
    req.checkBody('password', 'Invalid postparam').notEmpty()
 
    next()
  },
 
  // Sanitization middleware
  sanitize: function * (req, res, next) {
    req.sanitizeBody('email').normalizeEmail()
 
    next()
  },
 
  // Action logic middleware
  action: function * (req, res, next) {
 
    // Getting request data
    var { email, password } = req.body
 
    // Create new account
    var account = new Account({
      email,
      password
    })
 
    // Save account to database
    const data = yield account.save()
 
    // Response data with json
    res.json(data)
  }
 
}
 

Readme

Keywords

Package Sidebar

Install

npm i express-api-controller

Weekly Downloads

1

Version

1.2.0

License

MIT

Last publish

Collaborators

  • kulakowka