2015-10-23 1 views
1

J'ai une application node node (j'essaie de faire une pause api) et elle a une vue index.ejs qui contient un formulaire pour le nom d'utilisateur, les champs de nom et de message (en tant qu'entrées) et chaque fois que le formulaire est envoyé, la demande est réussie et un nouvel utilisateur est ajouté à la base de données (j'utilise redis, mais ce n'est pas important pour cette question). Le problème est que lorsque j'essaie de faire la demande via POSTMAN avec les mêmes paramètres, il échoue toujours (j'ai essayé les deux avec un objet json inséré dans le tableau de bord brut et quand il a échoué j'ai aussi essayé avec x-www-form-urlencoded mais ces valeurs sont toujours indéfinies dans le routeur du serveur pour req.body.username, req.body.name).Les paramètres envoyés par une requête POST dans POSTMAN ont toujours été indéfinis comme des valeurs en express

L'objet JSON inséré était le suivant:

{ 
    "username" : "[email protected]", 
    "message" : "shahid message shahid message shahid message shahid message", 
    "name" : "simple" 
} 

je tentais de trouver des solutions comme à force the content-type to json mais ça n'a pas trop.

Ceci est mon app.js

var express = require('express'), 
app = express(), 
redis = require('redis'), 
config = require('./config'), 
client = redis.createClient(config.redisConf), 
flow = require('flow-maintained'), 
// https://www.npmjs.com/package/flow-maintained 
bodyParser = require('body-parser'); 

/***************************/ 

client.auth('redistest1'); 

client.on("error", function (err) { 
console.log("Error " + err); 
}); 

client.on('connect', function() { 
console.log('connected to redis!!'); 

}); 


/*******************************/ 
app.set('view engine', 'ejs'); 
/*app.use(function(req, res, next) { 
    // IE9 doesn't set headers for cross-domain ajax requests 
    if(typeof(req.headers['content-type']) === 'undefined'){ 
     req.headers['content-type'] = "application/json; charset=UTF-8"; 
    } 
    next(); 
}) 
.use(bodyParser.urlencoded({extended: false}));*/ 

app.use(bodyParser.urlencoded({extended: false})); 



app.get('/', function(req, res){ 
    GetMessages(function(messages){  
    res.render('index', {messages: messages}); 
    }); 
}); 



app.get('/messages', function(req, res){ 
    GetMessages(function(messages){ 
    console.log(' GetMessages is running !!!!'); 
    console.log('log-code 0003 :: messages.toString() : ' + messages.toString()); 
    console.log('log-code 0004 :: messages : ' + messages); 
    res.json({messages: messages});  
    }); 
}); 

app.get('/messages/:id', function(req, res){ 
    var msgid = req.params.id; 
    console.log('log-code 0000 :::  msgid : '+ msgid); 

    FetchMessage(msgid, function(msg){ 
     console.log('log-code 0001 :::  message:'+ msgid+' : '+ msg); 
     res.json({message: msg}); 
    }); 



}); 


app.post('/', function(req, res){ 

    console.log('log-code 0012 ---:::  id:'+ req.body.id); 
    console.log('log-code 0013 ---:::  username: '+ req.body.username); 
    console.log('log-code 0014 ---:::  name : '+ req.body.name); 
    console.log('log-code 0015 ---:::  message:'+ req.body.message); 

    var username = req.body.username; 
    var name = req.body.name; 

    GetUserID(username, name, function(userid){ // GetUserID va chercher si un "user:username" existe déjà 
               // dans la base, si pas trouvé elle crée un nouvel 
               // key ""user:username"" --> value "userid" (en passant 
               // "user" et "username" à CreateUser() qui elle va incrémenter 
               // "next:user:id" et l'utilise comme userid du nouvel "user:username" créé) 
    AddMessage(req.body.message, userid, function(messid){ 
     console.log('Added message: ' + messid); 
     res.redirect('/'); 
    }); 
    }); 
}); 

app.post('/messages', function(req, res){ 

    console.log('log-code 0018 ---:::  id:'+ req.body.id); 
    console.log('log-code 0016 ---:::  username: '+ req.body.username); 
    console.log('log-code 0017 ---:::  name : '+ req.body.name); 
    console.log('log-code 0018 ---:::  message:'+ req.body.message); 
    console.log('log-code 0018 ---:::  id:'+ req.body.id); 

    var username = req.body.username; 
    var name = req.body.name; 

    res.write('\n Bien le bonjour'); 
    res.end(); 

}); 

function CreateUser(username, name, cb){ 
    client.incr('next:user:id', function(err, userid){ 
      /* 
       Returned value userid is the Integer reply: the value of key after the increment 
       see : http://redis.io/commands/incr 
      */ 
    flow.exec(
     function(){ 
     var user_string = 'user:' + userid; 
     client.set('user:' + username, userid, this.MULTI()); 
     client.hset(user_string, 'name', name, this.MULTI()); 
     client.hset(user_string, 'username', username, this.MULTI()); 
     },function(args){ 
     cb(userid); 
     } 
    ); 
    }); 
}; 

function GetUserID(username, name, cb){ 
    client.get('user:' + username, function(err, userid){ 
    if(userid){ 
     cb(userid); 
    }else{ 
     CreateUser(username, name, function(new_user){ 
     cb(new_user); 
     }); 
    } 
    }); 
}; 

function AddMessage(message, userid, cb){ 
    client.incr('next:message:id', function(err, id){ 
    flow.exec(
     function(){ 
     var mess_id = 'message:' + id; 
     client.set(mess_id, message, this.MULTI()); 
     client.set(mess_id + ':user', userid, this.MULTI()); 
     client.lpush('messages', id, this.MULTI()); 
     },function(){ 
     cb(id); 
     } 
    ); 
    }); 
}; 


function FetchMessage(id, cb){ 



    /********************************************/ 
    // conversion du code en-dessus au flow maintained 
    var msg; 
    flow.exec(
     function(){ 
     client.get('message:' + id, this);   
     },function(err, message) { 

     msg = message; 

     client.get('message:' + id + ':user', this);   
     },function(err, userid) { 

     client.hget('user:' + userid, 'name', this);   
     },function(err, name){ 

     cb({message: msg, name: name}); 
     } 
    ); 

    /*********************************************/  

}; 

function GetMessages(cb){ 
    flow.exec(
    function(){ 
     client.lrange('messages', 0, -1, this); 
    },function(err, messages){ 
     //an async foreach 
     var final_messages = []; 
     flow.serialForEach(messages, function(el){ 
     FetchMessage(el, this); 
     },function(mess){ 
     console.log('log-code 0005 :: mess to be added : ' + mess.toString()); 
     final_messages.push(mess); 
     },function(){ 
     cb(final_messages); 
     }); 
    } 
); 
}; 


app.listen(8003); 

enter image description here

Répondre

0

Entrez vos paires clé-valeur en cliquant sur le bouton « params », situé juste à gauche du bouton bleu soumettre en haut à droite de la fenêtre. Cela devrait fonctionner.

+0

En fait, si vous les mettez sous les "params", vous devrez obtenir les paramètres comme req.query.username et req.query.message etc ... au lieu de req.body.username. –