繁体   English   中英

为资源设计 API 端点,需要为不同的页面返回不同的 forms 数据

[英]Design API endpoint for resource that needs to return different forms of data for different pages

我正在使用 prisma 与 db、嵌套关系等进行通信。

我有多个页面请求的资源。 每个页面都需要来自资源的不同数据集,因此每个页面都会发送不同的查询参数。 简化的例子是:一页需要价格和名称,另一页需要价格、名称和收藏。

示例查询将是

prisma.product.findMany({
  where: {
    ...(collectionName ? { collection: {
      is: {
        collectionName,
      },
    } } : {}),
    ...(productName ? { productName } : {}),
  },
  ...(select ? { // checking if its array and mapping it is omitted for the example
    select: {
      [select]: true, // no way to select fields from relation
  } } : {}),
});

但是随着我添加使用该资源的新页面,添加越来越多的过滤器和/或select s,查询变得更加复杂,如果不使用select s,页面最终会请求接收不必要的数据。

感觉相当复杂,好像有办法让它变得更好,比如将端点拆分为多个或从前端发送整个Prisma.ProductFindManyArgs

如何降低复杂性并提高可重用性?

我建议您使用 GraphQL API,它允许客户端准确指定它想要接收的字段,从而允许进行更细粒度的查询。 使用 GraphQL API 还可以提供更大的灵活性和自定义,还可以通过减少端点的数量来简化后端代码。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM