gpt4 book ai didi

REST API,路径变量与请求参数

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

我目前正在编写一个Web服务,以提供对某些资源的访问。我尝试遵循REST,但遇到有关我的API某些部分的问题。

我有以下乌里斯:

  • /myservice/users/:获取所有用户
  • /myservice/users/{userId}:获取特定用户
  • /myservice/badges/:获取所有徽章
  • /myservice/badges/{badgeId}:获取特定的徽章

  • 现在,我的问题是,我必须实现一种获取具有特定徽章的所有用户的方法。
    我可以认为这只是我对用户列表应用的过滤器,因此以下uri:
  • /myservice/users/?filter = badge:{badgeId}

  • 或者我可以认为这只是徽章的子资源,因此以下uri:
  • /myservice/badges/{badgeId}/users/

  • 哪一个似乎必须“符合REST”?

    我必须说,我已经阅读了有关该主题的一些帖子,特别是关于这一主题的信息: Rest Standard: Path parameters or Request parameters,但它们似乎没有解决我的问题。

    最佳答案

    如果您希望使用RESTful,请考虑使用HATEOAS(可怕的首字母缩写,但真正实现RESTful的关键)。

    使用HATEOAS,您的Badge表示可能看起来像这样:

    <badge>
    <id>1234</id>
    <name>Admin</name>
    <link rel = "/rel/users"
    href = "/myservice/users?badge=1234" />
    <link rel = "self"
    href = "/myservice/badges/1234" />
    </badge>

    这使您的客户端与服务器的URI方案脱钩,因为它们只需在/rel/users链接提供的href上进行GET操作即可。当然,您的服务器仍然需要在内部定义URI方案,但是如果在某个时候您决定不关心它,则可以轻松更改它而不会破坏客户。例如,您可能想将URI方案更改为第二个选项,这将导致您的Badge表示形式更改为:
    <badge>
    <id>1234</id>
    <name>Admin</name>
    <link rel = "/rel/users"
    href = "/myservice/badges/1234/users" />
    <link rel = "self"
    href = "/myservice/badges/1234" />
    </badge>

    使用/rel/users链接关系的客户端不受URI更改的影响。归结为... 使用HATEOS,而URI方案实际上并没有多大影响

    干杯!

    关于REST API,路径变量与请求参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9893662/

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