如何将参数解析为 RESTful API

Posted

技术标签:

【中文标题】如何将参数解析为 RESTful API【英文标题】:How can I parse parameters to a RESTful API 【发布时间】:2019-11-27 14:08:50 【问题描述】:

我正在尝试制作一个基本的 RESTful API,它在大多数情况下都可以使用,但我想解析它的 url 参数,以便我可以在一次调用中应用多个过滤器

我有以下代码:

app.get('/api/products/:id',(req, res) => 
  let sql = "SELECT * FROM products WHERE id="+req.params.id;
  let query = conn.query(sql, (err, results) => 
    if(err) throw err;
    res.send(JSON.stringify("status": 200, "error": null, "response": results));
  );
);

当我发送这样的请求时,我可以使用它来应用一个过滤器:

localhost/api/products/1

但我想获取所有带有名称及其类别的产品:

IE 我想发送这样的请求: localhost/api/products?name=stier&category=hammer 我也希望它接受这样的请求 localhost/api/products?category=hammer

这可能吗?我该如何调整我的代码来做到这一点。

提前谢谢你

【问题讨论】:

查看req.query 这能回答你的问题吗? Query parameters in Express 【参考方案1】:

您可以将query 参数传递给该端点,就像您提到的那样。您可以使用req.query访问这些参数

对于:localhost/api/products?name=stier&category=hammerreq.query 将包含:


   name: 'stier',
   category: 'hammer'

对于该 URL,您必须添加一个路由:/api/products 并留下 /api/products/:id 以获取单个产品。

【讨论】:

路径为'/api/products/:id',该url甚至不会进入(req,res)的回调函数【参考方案2】:

你只需要设置'/api/products'后面的另一部分吗?被称为参数,并且 express 将它们自己放在对象 req.query

app.get('/api/products',(req, res) => 
    console.log(req.query)
    console.log(req.query.name)
    console.log(req.query.category)


)

【讨论】:

以上是关于如何将参数解析为 RESTful API的主要内容,如果未能解决你的问题,请参考以下文章

restful请求解析

使用 T-SQL 从 RESTful API 解析 JSON

将 XML 解析为 sql 参数、datetime2 和位问题

如何将今天的日期解析为参数

如何将(宽度)x(高度)命令行参数解析为两个参数?

将参数传递给 Docker 容器中的 Python argparse