首页 > 解决方案 > 用于描述 API 响应的接口应该包含所有字段还是只包含应用程序实际需要的字段?

问题描述

假设我有一个API端点,它返回和对象包含20 个字段。在这 20 个领域中,我只对两个感兴趣

我的(Typescript)界面(在 FE 端)应该描述整个对象还是只描述我需要的两个字段?这两种方法是否有任何(有意义的)影响?

想到的一些注意事项:

  1. (Full) 开发人员无需直接查看请求即可查看所有可用的内容。
  2. (只有 2 个)开发人员不会被字段的数量及其复杂性所淹没。
  3. (只有 2 个)开发人员只需要查看接口就知道应用程序中正在使用哪些字段。

一个子问题:责任应该在BE方面吗?API 是否应该只返回 FE 实际需要的东西?(让我们假设 GraphQL 和其他让 FE 创建查询的服务不可用)。每当 FE 需要某些东西时,这是否会给 BE 团队带来不必要的工作?

我会非常感谢这两个问题的回答者!

谢谢!

标签: typescriptinterfacefrontendapi-design

解决方案


一般来说,API 应该只返回与 FE 本身相关的字段。如果存在对 FE 很重要但有时可能未定义的字段,则仍应将它们作为null值返回给 FE,因为即使是null,FE 至少应该知道该字段有时需要。

如果您的 API 对象包含 20 个字段,那么您的接口也应该包含 20 个字段,您可以将 API 响应映射到仅包含 FE 所需字段的接口,但那是

a) 容易出错,因为您基本上必须映射到可能存在或不存在的属性,因为您首先无法知道 API 响应的样子,并且

b) 它创建了 API 在返回响应之前应该为您完成的不必要的代码和工作。

Imo,最好知道字段在那里,而不是映射响应并基本上忽略 API 响应的一部分。您的模型和接口应始终位于单独的文件中,尤其是在这种情况下,记录它们的用途(例如,在属性上方的注释中)。


推荐阅读