gpt4 book ai didi

java - 通过代理 ID 或业务 ID 获取资源的 REST 方法

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:06:21 26 4
gpt4 key购买 nike

我们有一些实体既有唯一的业务 ID(例如“我的唯一名称”),也有内部 UUID(例如 aa54-342-dffdf-55445-effab)。 Whats 是提供可以使用任一方法返回资源的 REST URI 的好方法。

方法 1 - 有两个资源 URL(丑陋!!!):

/foo-by-id/my-unique-name

/foo-by-uuid/aa54-342-dffdf-55445-effab

方法 2 - 始终使用查询参数(即使它返回单个项目......看起来不一样)

/foo?id=my-unique-name

/foo?uuid=aa54-342-dffdf-55445-effab

方法 3 - 让 Web 服务确定 {id} 是否为 UUID(这可能容易出错,但在所有可能性中都可以正常工作...

方法 4 - 使用 UUID,允许业务 ID 作为查询参数(不知道这是否可行)

/foo?id=my-unique-name

/foo/aa54-342-dffdf-55445-effab

如有任何想法,我们将不胜感激。

最佳答案

我会使用类似于选项 4 的方法。使用路径段中的 UUID 作为单个资源 URL。使用备用 URL 作为一种搜索 URL

例如

GET /foo?name=my-unique-name

303 See Other
Location: http://example.org/foo/aa54-342-dffdf-55445-effab

您不希望有两个 URL 都返回具有相同资源的 200。这会导致缓存污染。
现在您可以自由使用 GET“搜索样式”URL 进行其他类型的搜索。

GET /foo?account=other-unique-value

303 See Other
Location: http://example.org/foo/aa54-342-dffdf-55445-effab

或者您甚至可以搜索非独特的东西。

GET /foo?country=a-non-unique-value

200 OK
Content-Type: application/vnd.hal+xml

<resource href="http://example.org/foo?country=a-non-unique-value">
<resource rel="urn:acme:foo" href="http://example.org/foo/aa54-342-dffdf-55445-effab"/>
<resource rel="urn:acme:foo" href="http://example.org/foo/ba54-299-weras-55445-effab"/>
<resource rel="urn:acme:foo" href="http://example.org/foo/ca54-743-werre-23434-effab"/>
<resource>

关于java - 通过代理 ID 或业务 ID 获取资源的 REST 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8765416/

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