var express = require('express');
var app = express();
var bodyParser = require('body-parser');
var fs = require('fs');
var json_file = 'book_list2.json';
var port = process.env.PORT||4000;
var router = express.Router();
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();
});
router.use(bodyParser.urlencoded({ extended: true }));
router.use(bodyParser.json());
function jsRead(){
return new Promise(resolve => {
fs.readFile(json_file, 'utf8', function (err, response) {
if (err) {
console.log("jsRead error");
return reject(err);
}
return resolve(JSON.parse(response));
});
});
}
router.get('/book/:id',function(req, res){
var bookId = parseInt(req.params.id);
jsRead().then(function(ret){
for(var i = 0; i < ret.length; i++){
if(parseInt(ret[i].id) === bookId){
res.json(ret[i]);
}
}
res.json({message:'Kitap ID bulunamadı.'});
}).catch(function(err){
console.log(err);
});
});
app.use('/api',router);
app.listen(port);
console.log('Server '+port+' portu üzerinde çalışmaya başladı!');Kodlarım genel olarak bu şekilde.http://localhost:4000/api/book/1 yoluna GET isteği attığımda komut satırında hat alıyorum: Can't set headers after they are sent
Saatlerdir bu hatayı çözemedim. Promise olarak then ve catch kısımlarını kullanıyorum. Hata olduğunda catch bloğu çalışması lazım ancak then ve catch kısımları aynı anda çalışıyor