0

How do I get posted data from my api. I am using express 3.4.4

I am doing a resful api to accept posted data using node js and express

exports.mypost = function(req, res) {
    console.log(req.body);
    console.log(req.body.username);
    console.log(req.body.name);
    var user = new UserInfo({name:"dsd", username:"dsdsds"})
    user.save();
    res.send("user created");
}

and I post data use

 curl --data "username=dsds&name=dsd" http://localhost:3000/mypost

I can see prints

{ username: 'dsds', name: 'dsd' }
dsds
dsd

But If I use

 curl --form "username=dsds&name=dsd" http://localhost:3000/mypost

I see

{}
undefined
undefined

which means I didn't catch username and name from

req.body

How do I get the data from

 curl --form "username=dsds&name=dsd" http://localhost:3000/mypost

I am posting my app.js:

/**
 * Module dependencies.
 */

var express = require('express');
var routes = require('./routes');
var user = require('./routes/user');
var http = require('http');
var path = require('path');
var express = require('express');
var mongoose = require('mongoose');
var app = express();

// all environments
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.favicon());
app.use(express.logger('dev'));
app.use(express.json());
app.use(express.urlencoded());
app.use(express.methodOverride());
app.use(express.cookieParser('your secret here'));
app.use(express.session());
app.use(app.router);
app.use(require('stylus').middleware(path.join(__dirname, 'public')));
app.use(express.static(path.join(__dirname, 'public')));
app.use(express.bodyParser());

mongoose.connect('mongodb://localhost/data');
// development only
if ('development' == app.get('env')) {
  app.use(express.errorHandler());
}

app.get('/', routes.index);
app.get('/users', user.list);


var api = require('./controllers/api.js');
app.post('/mypost', api.mypost);

http.createServer(app).listen(app.get('port'), function(){
  console.log('Express server listening on port ' + app.get('port'));
});

2 Answers 2

1

Add this:

App.use(express.bodyParser());

Make sure its set before all your routes.

Sign up to request clarification or add additional context in comments.

1 Comment

I added this line. Still not working undefined undefined undefined
0

You can use bodyParser method to get the data from a post request

// Configure server
app.configure(function() {
app.use(express.bodyParser());
}

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.