API users
Como ya tenemos el modelo User, vamos a crear el endpoint /users
para poder consultar, crear, eliminar y actualizar un usuario.
Controlador
En la carpeta api/user
creamos el archivo user.controller.js
que va a tener todos los métodos que necesitemos, en este punto solo vamos a usar el de crear usuario.
const jwt = require('jsonwebtoken');
const User = require('./user.model');
const config = require('../../config/environment');
function validationError(res, statusCode) {
const statusCodeLocal = statusCode || 422;
return err => res.status(statusCodeLocal).json(err);
}
function handleError(res, statusCode) {
const statusCodeLocal = statusCode || 500;
return err => res.status(statusCodeLocal).send(err);
}
/**
* Get list of users
* restriction: 'admin'
*/
function index(req, res) {
return User.find({}, '-salt -password').exec()
.then(users => res.status(200).json(users))
.catch(handleError(res));
}
/**
* Creates a new user
*/
function create(req, res) {
const newUser = new User(req.body);
newUser.provider = 'local';
newUser.role = 'user';
return newUser.save()
.then((user) => {
const token = jwt.sign(
{ _id: user._id },
config.secrets.session,
{ expiresIn: 60 * 60 * 5 },
);
res.json({ token });
})
.catch(validationError(res));
}
module.exports = {
index,
create,
};
Ahora necesitamos una ruta para consumir estos métodos, vamos a crearlos.
Rutas
En la misma carpeta crearemos el archivo index.js
con el siguiente código:
/**
* User
* @author: Cristian Moreno Zuluaga <khriztianmoreno@gmail.com>
*/
const { Router } = require('express');
const controller = require('./user.controller');
const router = new Router();
router.post('/', controller.create);
module.exports = router;
La idea es llegar a tener en este archivo todas estas rutas:
Route
HTTP Verb
Route Middleware
Description
/api/users
GET
isAuthenticated
Get list of users
/api/users
POST
Creates a new user
/api/users/:id
GET
isAuthenticated
Get a single user
/api/users/:id
DELETE
hasRole('admin')
Deletes a user, restriction: 'admin'
/api/users/me
GET
isAuthenticated
Get my info
/api/users:id/password
PUT
isAuthenticated
Change a users password
Solo nos falta registrar nuestro endpoint en el archivo de rutas rotues.js
/**
* Main application routes
* @author: Cristian Moreno Zuluaga <khriztianmoreno@gmail.com>
*/
// Import Endpoints
const helloWorld = require('./api/helloworld');
const product = require('./api/product');
// New line
const user = require('./api/user');
module.exports = (app) => {
app.use('/api/helloworld', helloWorld);
app.use('/api/products', product);
// New line
app.use('/api/users', user);
};
Podemos crear un usuario accediendo por postman a la siguiente url: /api/users

Repositorio: Add the Users's route
Last updated
Was this helpful?