使用嵌套查询 REST API 获取请求

Posted

技术标签:

【中文标题】使用嵌套查询 REST API 获取请求【英文标题】:GET request with nested query REST API 【发布时间】:2022-01-16 13:08:44 【问题描述】:

从我的 MongoDB 数据库中,我正在查询数据。为此,在我的后端,我通过这个来获取数据,

const products = await Product.find(
    'backCamera.sensor.megaPixels':  $gte: 8 
  )

如何从前端发送 GET 请求来满足这个查询?

我试过这种方法,但没有用

fetch('http://localhost:5000/api/v1/products?backCamera.sensor.megaPixels[gte]=8')
      .then(response => response.json())
      .then(data => console.log(data));

然后尝试在后端使用查询参数但没有成功。

【问题讨论】:

12 是干什么用的?你能在后台显示控制台记录请求参数的代码吗? 对不起,现在编辑..你可以重新检查 【参考方案1】:

如果你想用 url 动态地显示整个东西,这意味着参数 backCamera.sensor.megaPixels 是动态的,你可以这样去做:

// Frontend
fetch('http://localhost:5000/api/v1/products?product=backCamera.sensor.megaPixels&minimum=8')
      .then(response => response.json())
      .then(data => console.log(data));

// Backend
// Retrieve the params product and minimum from the Url
const products = await Product.find(
    [product]:  $gte: minimum 
  )

【讨论】:

非常感谢兄弟【参考方案2】:

首先,您不需要将来自URL的查询匹配到后端的查询,也不需要直接发送。因此,您不需要理由去做api/v1/products?backCamera.sensor.megaPixels[gte]=8 之类的事情。在这种情况下,我会传递类似api/v1/products?backCamSensorMinPx=8 的内容,然后我会从 req.query 中提取后端数据并对其进行验证。它将解决一些安全问题(如果您使用 SQL),并将遵循一些分离后端核心逻辑和数据库实现的良好实践。

【讨论】:

以上是关于使用嵌套查询 REST API 获取请求的主要内容,如果未能解决你的问题,请参考以下文章

REST API:在单个查询中创建嵌套资源

使用 Django 的 ORM 和 Django Rest Framework 序列化嵌套关系的查询集的正确方法?

Apollo GraphQL 中带有变量的嵌套查询

使用谷歌图表对 JSON API 进行 jQuery 嵌套查询

带有嵌套模式的类型化REST API

ElasticSearch 将嵌套字段的 Rest 查询转换为客户端 Scala/Java 代码