【问题标题】:API naming conventions for list of objects对象列表的 API 命名约定
【发布时间】:2019-12-17 05:29:50
【问题描述】:

根据此处找到的命名约定:https://restfulapi.net/resource-naming/,我有一个特定的问题我找不到答案。

以客户和帐户为例,其中可以使用 URN “/customers/{customerId}/accounts” 标识特定“客户”的子集合资源“帐户”,我如何找到多个客户 ID 的帐户?这种情况的命名约定是什么?

是使用过滤器的唯一选择吗?例如:customers/accounts?customerId=12,22

【问题讨论】:

    标签: rest api naming-conventions


    【解决方案1】:

    我倾向于避免使用过滤器并将所有内容保留为urn,并隐藏后端系统的实现。例如这个

    customers/accounts?customerId=12,22
    

    意味着客户需要知道客户在系统中由一个名为customerId 的变量表示。客户不需要知道这一点。他们只需要知道客户有数字,恕我直言。

    answer 显示了适合您情况的解决方案,如下所示:

    customers/accounts/12,22
    

    尽管为了使其与客户拥有 ID 和关联帐户的域保持一致,但它看起来像:

    customers/12,22/accounts
    

    您的后端框架会为您提供来自 url 的客户“号码”列表,此时它们将变为 customerIds。

    并非所有框架都支持路径中的数组,但请为工作选择正确的工具,您可以将 API 设计得优雅并与您的领域完美匹配。

    【讨论】:

    • 我最喜欢第一个示例(查询字符串)。特别是第二个不好,因为不清楚这些是客户 ID。可能是帐户 ID,如果曾经介绍过,它们会咬你一口。
    • 是的,这就是为什么我更喜欢第三个,因为很明显它们与客户有关
    • 感谢您的投入!我想我们会坚持使用查询字符串,而不是习惯于 uri 中间的数组..
    猜你喜欢
    • 2012-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多