请求POST正文来表达

时间:2020-10-10 15:54:59

标签: javascript node.js express curl middleware

我是nodejs的新手,可以表达,并且在梳理一些代码时遇到了这个问题,这到底是什么意思?以及如何发送POST请求(使用cURL)?没有指定数据字段。

app.post('/', limiter, (req, res, next) => {
let {
    token
} = req.body;
if (token) {
    return res.send('congrats this is your first post request')
}
res.send('not good');
});

用过烧瓶后,我对发生的事情有了大致了解...但是我不明白这部分

let {
    token
} = req.body;

有人可以解释一下这里发生了什么吗?无论我尝试什么,它都不接受任何POST请求。并没有返回我想要的东西。如果这个疑问看起来太琐碎,请原谅,但是我在互联网上的任何地方都没有看到这个。

3 个答案:

答案 0 :(得分:2)

这是将req.body.token的值分配给名为token的变量。与此相同:

let token = req.body.token;

如果您要curl的终结点,则您的数据应为JSON,如下所示:

curl -H "Content-Type: application/json" \
    -X POST \
    -d '{"token":"<your token here>"}' \
    <your url>

答案 1 :(得分:0)

仅供参考:以下内容可能会有所帮助。

ES2015引入了两个重要的新JavaScript关键字: let const

这两个关键字在JavaScript中提供了 Block Scope 变量(和常量)。

在ES2015之前,JavaScript仅具有两种范围:全局范围功能范围

通常最好养成使用let避免范围界定问题的习惯。

您可以找到更详细的示例here

答案 2 :(得分:0)

为了后代,我在下面添加了对整个脚本的带注释的说明,以帮助您了解脚本的作用。

/* Sets up a route in express-js */
app.post('/', limiter, (req, res, next) => {
  /* 
     Destructured Variable Assignment (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)
     The "token" variable is copied from "token" key in "req.body" object (req.body.token). 
     You probably have bodyParser somewhere in your app that's extracting the body as a JSON for you.
  */
  let {
      token
  } = req.body;
  /* Checks "token" for truthiness */
  if (token) {
      /* sends a response (using return to exit this handler function) */
      return res.send('congrats this is your first post request')
  }
  /* Sends a response since the if statement did not call return. */
  res.send('not good');
});

此文件等效:

app.post('/',limiter,(req,res,next)=>{
  if (req.body.token){
    return res.send('congrats this is your first post request');
  }
  res.send('not good');
});
相关问题