我正在尝试将专辑从“汽车”重命名为“汽车”。但是,请继续获取以下错误。 SyntaxError:JSON中位置1处的意外令牌a。
可能是什么问题?
我正在使用以下curl命令:
-s -X POST -H "Content-Type: application/json" \-d { "album_name" : "Car" } http://localhost:8080/albums/cars/rename.json
这是我的server.js:
var express = require('express'),
morgan = require('morgan'),
bodyParser = require('body-parser');
var app = express();
app.use(morgan('dev'));
var fs = require('fs'),
album_hdlr = require('./handlers/albums.js'),
page_hdlr = require('./handlers/pages.js'),
helpers = require('./handlers/helpers.js');
app.use(express.static(__dirname + "/../static"));
app.get('/v1/albums.json', album_hdlr.list_all);
app.get('/v1/albums/:album_name.json', album_hdlr.album_by_name);
app.get('/pages/:page_name', page_hdlr.generate);
app.get('/pages/:page_name/:sub_page', page_hdlr.generate);
app.get("/", function (req, res) {
res.redirect("/pages/home");
res.end();
});
app.use(bodyParser.urlencoded({ extended: true }));
app.use(bodyParser.json());
app.post(function(req, res){
console.log(req.body);
res.end('want to update album name to '
+ req.body.album.new_name + "\n");
});
app.get('*', four_oh_four);
function four_oh_four(req, res) {
res.writeHead(404, { "Content-Type" : "application/json" });
res.end(JSON.stringify(helpers.invalid_resource()) + "\n");
}
app.listen(8080);
还有我的package.json:
{
"description": "Our Photo Sharing Application with static middleware",
"version": "0.0.2",
"private": true,
"dependencies": {
"async": "2.x",
"body-parser": "^1.18.3",
"express": "4.x",
"morgan": "1.x",
"multer": "1.x",
"typescript": "^2.0.0"
}
}
答案 0 :(得分:1)
在curl命令中,可能已对双引号进行了评估,请尝试
-s -X POST -H "Content-Type: application/json" \-d '{ "album_name" : "Car" }' http://localhost:8080/albums/cars/rename.json
答案 1 :(得分:1)
尝试使用单引号,如下所示:
curl -s -X POST -H "Content-Type: application/json" -d '{ "album_name" : "Car" }' http://localhost:8080/albums/cars/rename.json
或者使用双引号将内双引号转义
curl -s -X POST -H "Content-Type: application/json" -d "{ \"album_name\" : \"Car\" }" http://localhost:8080/albums/cars/rename.json
我也不明白您为什么要转义“ -d”。没必要。
答案 2 :(得分:0)
可能是cURL请求未正确传递正文请求中的信息吗?
我有一个使用cURL进行POST请求的批处理文件。我用来使正文正确发布的语法是Amirr0r回答中的第二种语法。我尝试重新格式化文件的-d部分以使用单引号,并且不使用主体转义双引号,但是它没有正确传递值。
因此,如果像上面的答案那样构造cURL调用的正文部分,它应该正确地传递数据。