gpt4 book ai didi

java - REST 超媒体/集合链接

转载 作者:行者123 更新时间:2023-12-02 15:04:15 24 4
gpt4 key购买 nike

REST 最佳实践的一部分是利用响应中的链接来允许客户端从一个实体导航到另一个实体。

例如,如果我有一个包含子帐户的客户对象类型。如果我使用 /customers/1 请求客户,那么我可能会提供以下响应

{
"self": "http://localhost:43002/rest/v1/customers/1",
"id": 1,
"name": "Isabella Button",
"number": "000001",
"forename": "Isabella",
"surname": "Button",
"accounts": [
{
"self": "http://localhost:43002/rest/v1/accounts/1",
"id": 1,
"name": "Main Account",
"number": "000001",
"currency": "GBP",
"fromDate": "2013-01-01",
"toDate": "9999-01-01",
"createdDttm": "2013-01-01T00:00:00.000"
}
]
}

请注意,self 属性保存链接。

但是,假设我不想返回客户查询中的帐户,也许帐户数量可能非常大,所以我不想默认返回它们。

{
"self": "http://localhost:43002/rest/v1/customers/1",
"id": 1,
"name": "Isabella Button",
"number": "000001",
"forename": "Isabella",
"surname": "Button"
}

客户帐户的资源 URL 可以是 /customers/1/accounts

但是,根据上述客户响应,客户将无法发现 /customers/1/accounts 链接。

是否有在响应中提供指向返回资源的“子”集合的超链接的最佳实践?

最佳答案

一种做法是使用 links 元素,如下所示:

{
"self": "http://localhost:43002/rest/v1/customers/1",
"id": 1,
"name": "Isabella Button",
"number": "000001",
"forename": "Isabella",
"surname": "Button",
"links" : [
{
"rel" : "http://www.yourapi.com/rels/accounts",
"href" : "http://localhost:43002/rest/v1/customers/1/accounts"
},
{
"rel" : "http://www.yourapi.com/rels/someOtherCollection",
"href" : "http://localhost:43002/rest/v1/customers/1/someOtherCollection",
}
]
}

或者,如果您发现构建/读取响应更容易,您可以放置​​与链接 http header 相同的链接。

关于java - REST 超媒体/集合链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16267126/

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