【问题标题】:JsonAPI resource Id recommendationJsonAPI资源Id推荐
【发布时间】:2017-02-07 18:27:37
【问题描述】:

This 页面显示对于 JSONAPI 推荐的“id”类型是字符串。

identification

Every resource object MUST contain an id member and a type member. The values of the id and type members MUST be strings.

将它保存为字符串可以得到什么。换句话说,如果在某些情况下 id 只是数字,是否仍然建议将它们保留为字符串?

【问题讨论】:

    标签: json web-services rest api


    【解决方案1】:

    他们并没有试图迎合“某些”情况。他们试图提出一个 API 框架,允许客户端灵活地使用 API。具体来说,这个想法是,如果客户端符合该规范,那么它可以开始处理任何也符合该规范的 API 实现。关键思想是可移植性。它们都是关于描述 API 之间的共同特征。

    现在,你可以肯定对资源说太多的话,因为资源是赋予 API 目的的东西,但知道哪个(也许)很重要您已经看到的资源及其类型。它们都是任何 API 使用者都需要的信息(争论不休)。一旦你决定它们需要通用,你就需要一个通用的 JSON 数据类型(因为整数看起来与 JSON 中的字符串不同)。

    JSONAPI 格式的设计是为了让一个编写良好的客户端实际上可以处理多个不同的 API,而几乎不需要更改。只有当它能够区分什么对客户端本身来说是重要的处理和什么对客户端传递给第三方很重要(例如,在 UI 中显示或操作的东西),它才能做到这一点。

    在规范中进一步讨论了 type 和 id 如何共同构成资源本身中任何字段的命名空间。因此,客户端要以任何有意义的方式使用该信息,它需要知道 id 和 type 字段的类型。

    最终,JSONAPI 规范的编写者表示,id 和 type 字段是普遍有用的,无论它们在资源/API 本身中的价值如何。因此,无论对任何单个 API 来说什么是有意义的,它们都需要具有合理定义的语义。字符串和整数的行为不同,因此您需要做出选择。并且字符串在 API 之间更加灵活,所以他们已经进行了调用。他们本可以选择整数而侥幸,但他们可能认为在人们确实想要一个字符串作为 id 的情况下这会有点限制。

    【讨论】:

    • 您的回答很有道理,我更好奇他们为什么在规范中使用“必须是字符串”。它看起来更像是一项授权而不是一项建议。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-14
    • 1970-01-01
    相关资源
    最近更新 更多