gpt4 book ai didi

api - REST API 中的资源建模(时间序列数据到多个标识符的问题)

转载 作者:行者123 更新时间:2023-12-04 21:37:51 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

2年前关闭。




Improve this question




我在为域中的资源建模以适应 REST API 时遇到了一些麻烦。这个例子显然是人为和简化的,但它说明了我被卡住的 2 点。
我知道:

  • 用户有宠物
  • 宠物有多个名字——每个家庭成员一个名字
  • 宠物有:出生日期、死亡日期和类型(狗、猫...)
  • 我需要能够根据日期进行查询(实际上,在询问宠物时,日期或日期范围是强制性的)。例如:告诉我我现在有什么宠物;告诉我奶奶说我们从 5 年前到 3 年前养了什么宠物。

  • 我应该如何处理日期?
    一种。在查询字符串中:/pets/dogs/d123?from=10102010&to=10102015(但据我所知,查询字符串主要用于可选参数;并且需要日期/日期范围。我想将当前日期作为默认值,如果查询字符串中没有任何内容。对此有何想法?)
    湾路径中的某个地方。在/pets 之前?当我在日期和日期范围之间切换时,这似乎有点奇怪。而我真正的路已经有点长
    我应该如何处理多个名称?
    根据我的看法,我必须指定谁使用我正在搜索的名称。
    /pets/dogs/rex -> 我想知道叫 rex 的狗(由谁,我或奶奶?)。但是把奶奶放在哪里呢?
    我看到有些人说不要担心 url,并使用超媒体但是我理解的方式(并且可能我弄错了)是你必须始终从根开始(这里是/pets )并遵循回复中提供的链接。然后我更加陷入困境(因为日期列出了非常长的可能性列表)。
    任何帮助表示赞赏。谢谢

    最佳答案

    在这种情况下可能有用的是一种资源查询语言。它不知道您使用的技术堆栈,但可以找到一个 JavaScript 示例 here .

  • 绝对不要在路径中放置任何日期。这被认为是一种糟糕的风格,用户可能会感到困惑,因为他们中的大多数人可能不习惯这种奇怪的设计,根本不知道如何使用 API。通过查询字符串传递日期非常好。您可以引入默认状态 - 这不是一个坏主意 - 但您需要在响应中描述状态(例如,包括日期)。您也可以返回 400 Bad Request请求中缺少日期范围时的状态代码。就个人而言,我会通过查询字符串获取默认状态和日期。
  • 在这种情况下,我唯一想到的是扭转关系,所以它是:
    /users/grandma/dogs/rex

    或者:
    /dogs/rex/owners/grandma
  • 还可以做的是放弃 REST 规则并引入新的端点 /dogs/filter将接受 POST请求体中带有过滤器。这样,描述整个查询以及发送它会容易得多。正如我提到的,这不是 RESTful 方法,但在这种情况下似乎是合理的。这种过滤也可以用纯 REST 设计建模——过滤器也将成为一种资源。

  • 在这种特殊情况下,超媒体似乎不是可行的方法——老实说,我不太喜欢超媒体设计。

    关于api - REST API 中的资源建模(时间序列数据到多个标识符的问题),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33701337/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com