I'm trying to do a simple POST via a restify client. Here's the code I'm using.
var gengie = require('chance'),
assert = require('assert'),
restify = require('restify'),
chance = new gengie();
var storgie_gen = {
write_sample_data: function (){
var client = restify.createJsonClient({
url: 'http://localhost:3000'
});
var thing = { test: chance.d100(), another: chance.guid()};
client.post('/ident/', thing, function(err, req, res, obj){
assert.ifError(err);
console.log('%d -> %j', res.statusCode, res.headers);
console.log('%j', obj);
});
}
};
storgie_gen.write_sample_data();
When the code is executed with the storgie_gen.write_sample_data(); call it returns with the following error.
assert.js:324
assert.ifError = function(err) { if (err) {throw err;}};
^
InternalServerError: {"error":{"message":"Converting circular structure to JSON","stack":"TypeError: Converting circular structure to JSON\n at Object.stringify (native)\n at ServerResponse.res.json (/Users/adronhall/Coderz/Storgie/node_modules/express/lib/response.js:189:19)\n at ServerResponse.res.send (/Users/adronhall/Coderz/Storgie/node_modules/express/lib/response.js:121:21)\n at exports.ident_create (/Users/adronhall/Coderz/Storgie/routes/index.js:14:16)\n at callbacks (/Users/adronhall/Coderz/Storgie/node_modules/express/lib/router/index.js:164:37)\n at param (/Users/adronhall/Coderz/Storgie/node_modules/express/lib/router/index.js:138:11)\n at pass (/Users/adronhall/Coderz/Storgie/node_modules/express/lib/router/index.js:145:5)\n at Router._dispatch (/Users/adronhall/Coderz/Storgie/node_modules/express/lib/router/index.js:173:5)\n at Object.router (/Users/adronhall/Coderz/Storgie/node_modules/express/lib/router/index.js:33:10)\n at next (/Users/adronhall/Coderz/Storgie/node_modules/express/node_modules/connect/lib/proto.js:193:15)"}}
at ClientRequest.onResponse (/Users/adronhall/Coderz/Storgie/node_modules/restify/lib/clients/http_client.js:132:38)
at ClientRequest.g (events.js:175:14)
at ClientRequest.EventEmitter.emit (events.js:95:17)
at HTTPParser.parserOnIncomingClient (http.js:1658:21)
at HTTPParser.parserOnHeadersComplete [as onHeadersComplete] (http.js:119:23)
at Socket.socketOnData (http.js:1553:20)
at TCP.onread (net.js:524:27)
The API is simply an express post setup like
app.post('/ident', routes.ident_create);
with the route function looking like this
exports.ident_create = function (req, res) {
console.log("POST: ");
console.log(req.body);
return res.send(res);
};
I checked out the object, but I'm not exactly sure why it would be getting a circular JSON error on the "{ test: chance.d100(), another: chance.guid()}" thing object. To begin the debugging I run the above code in WebStorm using the debugger and was able to see the following data from the test and another variables/key values above. The results read as...
debugger listening on port 65377
storgie server listening on port 3000
POST:
{ test: 72, another: '19C80230-89C6-54BD-A9A0-16A1BB77EF27' }
TypeError: Converting circular structure to JSON
POST /ident/ at Object.stringify (native)
500 at ServerResponse.res.json (/Users/adron/Codez/Storgie/node_modules/express/lib/response.js:189:19)
159821ms at ServerResponse.res.send (/Users/adron/Codez/Storgie/node_modules/express/lib/response.js:121:21)
at exports.ident_create (/Users/adron/Codez/Storgie/routes/index.js:14:16)
at callbacks (/Users/adron/Codez/Storgie/node_modules/express/lib/router/index.js:164:37)
at param (/Users/adron/Codez/Storgie/node_modules/express/lib/router/index.js:138:11)
at pass (/Users/adron/Codez/Storgie/node_modules/express/lib/router/index.js:145:5)
at Router._dispatch (/Users/adron/Codez/Storgie/node_modules/express/lib/router/index.js:173:5)
at Object.router (/Users/adron/Codez/Storgie/node_modules/express/lib/router/index.js:33:10)
at next (/Users/adron/Codez/Storgie/node_modules/express/node_modules/connect/lib/proto.js:193:15)
I even changed the code above so that I wasn't using the chance module and set var thing to this.
var thing = { test: 'tests', another: '19C80230-89C6-54BD-A9A0-16A1BB77EF27'};
Even after setting it to known values, I still get the error.
I'm still not sure what is circular, and I'm not particularly familiar with efficient ways to trace this down - but I think I'm getting there. Any other ideas welcome. I haven't, as of yet, noticed a [Circular] but hopefully soon I'll stumble onto something.