我正在尝试使用Express从URL获取一个Json对象:
这是我的代码:
app.get('/device/:id', (req, res, next) => {
console.log('device: ' + req.params.id + ' Request received');
let parsedContent = JSON.parse(req.query);
//res.status(201).send('success');
});
这是我的网址:
http://localhost:4001/device/1?{"type":"fridge","pcb"=2.4}
我在解析行上遇到错误。
以下是所请求的错误:
SyntaxError: Unexpected token o in JSON at position 1
at JSON.parse (<anonymous>)
我也尝试过:
app.get('/device/:id', (req, res, next) => {
let query = url.parse(req.url).query;
if( query ) {
let parsedContent = JSON.parse(decodeURIComponent(query));
}
});
使用此网址:
http://localhost:4001/device/1??type=fridge&pcb=2.4
还是同样的问题。
答案 0 :(得分:1)
如果要在请求中发送json数据,最好使用POST
请求。然后服务器应接受发布数据。
var bodyParser = require('body-parser')
app.use( bodyParser.json() ); // to support JSON-encoded bodies
app.use(bodyParser.urlencoded({ // to support URL-encoded bodies
extended: true
}));
...
app.post('/device/:id', (req, res, next) => {
console.log('device: ' + req.params.id + ' Request received');
let parsedContent = JSON.parse(req.query);
let payload = req.body.payload; // your json data
//res.status(201).send('success');
});
如果您坚持使用GET
请求,则需要先对查询参数进行编码,然后再将其发送到服务器。
http://localhost:4001/device/1?payload=%7B%22type%22%3A%22fridge%22%2C%22pcb%22%3D2.4%7D
在服务器代码中,您可以以let payload = JSON.parse(req.query.payload)
的身份访问它
答案 1 :(得分:0)
您的网址应为:
caret
您无法像在URL中一样编写查询。它必须遵循格式。
?描述了查询的开始。然后,将键值对设为key = value,如果有很多键,则使用单个&
所以# Create example dataset
set.seed(0)
user_id <- rep(1:10, sample(1:10, 10))
df <- data.frame(user_id = user_id, vals = runif(length(user_id)))
# Sort by user id
df <- df[order(df$user_id),]
# For each user ID, Create logical index which is T for ~80% of rows
split.lgl <- lapply(unique(df$user_id), function(x){
n.rows <- sum(df$user_id == x)
sample(n.rows) <= 0.8*n.rows})
# subset
train <- df[do.call(c, split.lgl),]
....
您的需求查询将是:
http://localhost:4001/device/1?type=fridge&pcb=2.4