I am trying to make a request to my node JS server which accepts post/put call. The parameters I am trying to send with post call via chai is not visible on server (req.body.myparam).
I have tried with below post request but ended with not results:-
var host = "http://localhost:3000";
var path = "/myPath";
chai.request(host).post(path).field('myparam' , 'test').end(function(error, response, body) {
and
chai.request(host).post(path).send({'myparam' : 'test'}).end(function(error, response, body) {
Node JS code is given below:-
app.put ('/mypath', function(req, res){ //Handling post request to create league
createDoc (req, res);
})
app.post ('/mypath', function(req, res){ //Handling post request to create league
createDoc (req, res);
})
var createDoc = function (req, res) {
var myparam = req.body.myparam; //league id to create new league
if (!myparam) {
res.status(400).json({error : 'myparam is missing'});
return;
}
};
Above code goes to myparam is missing.
Please let me know what is the best way to do the same.
Thanks in Advance.
The way you have written, I assume that you used chai-http package. The .field() function does not work in chai-http. Another user pointed it out here and opened an issue on github.
Here is how you could have written:
Here is the full code that successfully passes parameters to the server:
test.js
server.js
I found two ways to solve the issue with empty
req.body
.body
as a form databody
asapplication/json
In both cases I use
.send({foo: 'bar'})
and not.field('foo' , 'bar')
.The issue apparently has nothing to do with
chai-http
. It issuperagent
's issue. Andchai-http
is usingsuperagent
under the hood.superagent
tries to play Machine Learning and make guesses for us. Here is what their docs say:chai-http
biggest fault is that they didn't document their plugin properly. You have to search for answers all over the Internet and not onchai-http
GitHub page where it must be.