[英]How to Pass a User object as parameter to node.js's Express api like asp.net
我正在学习node.js,我需要将一个User对象传递给node.js的Express api,我看到的问题文档很少,但都涉及bodyparser 。 但我需要知道bodyparser仅是解决此问题的好方法,否则我可以将.Net / Java做为User Type数据类型发送User对象。 我需要完全按照给定的.net示例发送对象。
用户对象
var user={
"Id":1,
"FullName":"Mr. X"
}
如果我通过ajax发送上述用户,则ASP.NET方法将自动适合我的asp.net方法的参数(用户u)。
public IHttpActionResult Save(User u)
{
return Ok(_userService.Save(u));
}
Node.js的
var req=require('body-parser');
router.post('/save', function (req, res) {
var user=req.body.User;
return userServices.Save(user).then(function (results) {
res.send(results);
}).catch(function (reason) {
res.send(reason);
});
});
好的,使用上面的示例。
假设我们有JSON发布请求->
{
"Id":1,
"FullName":"Mr. X"
}
无需使用所有锅炉代码来进行错误处理等,而是可以使用JS创建包装函数来处理此错误。 看来您的使用承诺会更好。
所以之后的事情就像->
router.post('/save', handlePost((user) => userServices.Save(user)) );
对我来说,这看起来与ASP版本非常相似,并且实际上在做更多的事情,因为它实际上显示的是/save
路由,而您没有在ASP版本中显示。
因此,下一步是创建handlePost
函数。
function handlePost(func) {
return (req, res) => {
func(req.body).then((results) => {
res.send(results);
}).catch((reason) => {
res.status(500).send(reason);
});
}
}
希望这就是你所追求的。
如果使用Promise,那么handlePost当然可以用于所有请求,实际上不仅是Post请求,因此我确实应该将其命名为handleReq
。 甚至ok
像ASP一样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.