Dears I used node js to build rest API and in post API I think request goes empty when I tested it from postman or soap UI but when using test rest functionality from web storm IDE it works fine and inserts records in the database. I don't know what is the problem exactly but it seems the data inserted not passed to the API
app.js
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var logger = require('morgan');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var mysql =require('mysql');
var index = require('./routes/index');
var users = require('./routes/users');
var connection = require('express-myconnection');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'jade');
// uncomment after placing your favicon in /public
//app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
app.use(logger('dev'));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: true }));
//app.use(cookieParser());
//app.use(express.static(path.join(__dirname, 'public')));
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
index.js
var express = require('express');
var router = express.Router();
var bodyParser = require('body-parser');
/*GET home page. */
router.get('/', function(req, res, next) {
res.render('index', { title: 'Express' });
});
router.get('/settings', function(req, res) {
req.getConnection(function(err,connection){
connection.query('select * from SETTINGS',[],function(err,result){
if(err) return res.status(400).json();
return res.status(200).json(result);
});
});
});
//create
router.post('/addset', function(req, res) {
var insert_data = req.body;
req.getConnection(function(err,connection){
connection.query('INSERT INTO SETTINGS SET ?',[insert_data],function(err,rows,result){
if (!err){
var response = [];
if (rows.length !== 0) {
response.push({'result' : 'success', 'data' : rows});
} else {
response.push({'result' : 'error', 'msg' : 'No Results Found'});
}
res.setHeader('Content-Type', 'application/json');
res.status(200).send(JSON.stringify(response));
} else {
res.status(400).send(err);
}
});
});
});
the error which i got when in postman
{
"code": "ER_PARSE_ERROR",
"errno": 1064,
"sqlMessage": "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1",
"sqlState": "42000",
"index": 0,
"sql": "INSERT INTO SETTINGS SET "
}
i solved this issue by modifying content-type to json in postman
Collected from the Internet
Please contact [email protected] to delete if infringement.
Comments