簡體   English   中英

如何將User對象作為參數傳遞給node.js的Express api,例如asp.net

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM