【问题标题】:should I expose derivable field in API?我应该在 API 中公开可派生字段吗?
【发布时间】:2019-02-20 23:09:20
【问题描述】:
假设我有一个字段定义的模式 - id 并且值看起来像 - 1234。现在,几乎在所有情况下,客户端都需要创建一个 URL - 例如https://<server>/<path>/receipt/<id>。
我处于两难境地 - 我应该公开 URL 字段还是应该客户端使用 id 在最后创建它?
【问题讨论】:
标签:
javascript
api
schema
graphql
api-design
【解决方案1】:
在这种特殊情况下,我会说是,但这取决于。以下是一些需要考虑的事项:
暴露计算域的原因:
对客户端隐藏业务逻辑。很多时候,我们不希望公开一个或多个用于确定计算值的字段,或者不希望客户端(或最终用户)知道使用了哪些字段。
确保客户端与业务逻辑无关。如果业务规则发生变化,只有服务器代码会受到影响。
减少代码重复。代码只需在服务器上编写一次,即使有多个应用程序使用 API。
不公开计算域的原因: