我试图从users.json
文件中删除用户,该文件与调用API的app.js
位于同一目录中,但每次运行代码时,都显示错误:“无法获取/删除”,在浏览器。我寻找解决方案,但没有找到任何解决方案。任何帮助将不胜感激。
这是users.json
文件。 {
"user1" : {
"name" : "mahesh",
"password" : "password1",
"profession" : "teacher",
"id": 1
},
"user2" : {
"name" : "suresh",
"password" : "password2",
"profession" : "librarian",
"id": 2
},
"user3" : {
"name" : "ramesh",
"password" : "password3",
"profession" : "clerk",
"id": 3
}
}
//app.js file
var express = require ('express');
var app = express();
var bodyParser = require('body-parser');
var multer = require('multer');
var fs = require("fs");
var PORT = 3000;
var id = 2;
//here is the delete api
app.delete('/delete',(req,res) => {
fs.readFile(__dirname + "/" + "users.json", 'utf8', (err,data) => {
data = JSON.parse( data );
delete data["user" + 2];
console.log( data );
res.end( JSON.stringify(data));
});
})
var server = app.listen(PORT,function(){
console.log('server started at port ' + PORT);
});
除此之外我怎么能从id
动态地给出用户的url
。我试过req.params.id
,我不确定我在写它。 delete data["user" + req.params.id];
这个id
将在网址app.delete('/delete/:id', ...
中提供
使用app.get
时,您的代码工作正常。
你只需要使用app.get
而不是app.delete
更新
http.delete不能在浏览器中工作,当你从浏览器访问url时它会作为get请求。
如果你使用邮递员它工作正常,
检查示例代码。
app.delete('/delete/:id', function(req, res) {
var id = req.params.id ;
fs.readFile("./users.json", 'utf8', (err,data) => {
data = JSON.parse( data );
delete data["user" + id];
console.log( JSON.stringify(data) );
res.status(200);
return res.send("Removed");
});
})
您的代码适用于邮递员的API调用。但是,如果您直接尝试使用浏览器URL,那么这是一个GET调用(您可以在日志记录中观察它)。要删除,您需要使用URL路径和回调修改GET调用。希望我能理解这个问题。