Skip to content

Instantly share code, notes, and snippets.

@fabianogoes
Last active September 19, 2017 02:09
Show Gist options
  • Save fabianogoes/3d62ed6b66b93152edd94f8cbc7c5c69 to your computer and use it in GitHub Desktop.
Save fabianogoes/3d62ed6b66b93152edd94f8cbc7c5c69 to your computer and use it in GitHub Desktop.
REST CRUD com NodeJS - Modularizando - Controllers

index.js

module.exports = app => {
    console.log('controllers.index /');
    app.get('/', (req, res) => {
        res.send('REST API /');
    });
};

tasks.js

module.exports = app => {
    const Tasks = app.models.tasks;

    ///////////////////////////////////////////////
    // Routes 
    ///////////////////////////////////////////////
    app.get('/tasks', (req, res) => {
        let params = null;
        Tasks.findAll(params, function(tasks){
            res.json(tasks);
        });        
    });

    app.get('/tasks/:id', (req, res) => {
        let id = req.params.id;
        Tasks.findOne(id, function(task){
            res.json(task);
        });
    });  

    app.post('/tasks', (req, res) => {
        let name = req.body.name;
        Tasks.save(name, function(task){
            res.json(task);
        });        
    });

    app.put('/tasks', (req, res) => {
        let id = req.body.id;
        let name = req.body.name;
        Tasks.update(id, name, function(task){
            res.json(task);
        });
    });

    app.delete('/tasks/:id', (req, res) => {
        let id = req.params.id;
        Tasks.delete(id, function(){
            res.json({});
        });            
    });

};

Obs.: No arquivo index.js criamos apenas um entrypoint que ser como uma home de nossa API, exibe apenas uma mensagem sem regra nenhuma. Já no arquivo tasks.js temos todos os endpoints para um CRUD de tasks, permitindo: CREATE, READ, UPDATE, DELETE.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment