Nodejs + Express:如何获取发出HTTP GET请求的元素?

4
我正在使用Express制作一个前端页面。我有一张表格,每一行都有一个链接,该链接会发出GET请求,然后后端(用node.js完成)会返回与该行对应的文件。 所有链接都像 “/documents/table/file” 这样进行 GET 请求。 我的意图是让我的Express服务器能够知道哪个行的链接使用了 req 字段发出 GET 请求,以便能够返回相应请求的文件。
请求被我的Express服务器处理如下:
router.get('/documents/table/file', async (req, res) =>{
  //Get which element made the get petition
});

就像我之前说的一样,我想知道表格的哪一行通过 req 字段执行了请求。

3个回答

1
简而言之:你无法知道这个。
通常处理的方法是,如果需要请求特定项目(或表中的行),则需要向url添加一些相关信息以自我识别。
因此,如果是对`/foo/get-file`的`GET`请求,并且每个“文件”都有某种唯一的ID,则您可能希望将您的URL更改为`/foo/get-file/123`或`/foo/get-file?id=123`。

感谢您的回答。但是您如何在您的Node.js服务器上处理它? - Marcos Severt Silva

1
您需要传递关于进行GET请求的行/项的信息,这是必须的。
现在使用Express有几种方法可以实现:Express路由1. 定义路由参数:req.params GET请求:/documents/table/file/345(345是行标识符name或id等)。
在nodejs express端:
router.get("/documents/table/file/:id", (req, res) => {
  /*request parameter with this kind of route sits in req.params*/
  console.log(req.params);
  const requestedId = req.params.id;
});

2. 将其作为查询字符串参数发送:req.query

GET 请求:/documents/table/file?id=345

在 Node.js Express 端:

router.get("/documents/table/file/", (req, res) => {
  /*request parameter with this kind of route sits in req.query*/
  console.log(req.query);
  const requestedId = req.query.id;
});

0
你想使用get命令访问特定文件吗?如果是这样,这里有一个答案 - Express路由器-:id?
更准确地说,你可以编写类似于router.get('/documents/table/file/:id)的代码,而这个:idreq.params对象中可用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接