gpt4 book ai didi

rest - RESTFul HATEOAS API 中的 HTTP POST 请求

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

我正在编写一个 RESTful HATEOAS API。
我有复合实体,我必须 GET、POST 和 PUT。 GET 部分很简单,并且有很多示例。响应包含实体的原始属性和嵌套实体的链接。
例如:

{
"id":"2",
"firstName":"Brad",
"lastName":"Pitt",
"balance":1234.5,
"transactions":"http://localhost:8080/jersey-poc/api/v1.1/account/1/transactions",
"self":"http://localhost:8080/api/v1.1/account/1",
"accountType":"http://localhost:8080/api/v1.1/account/1/accountType"
}

当我想创建或修改帐户时出现问题。我需要将帐户与 accountType 相关联。我可以发送一个 POST 请求,如下所示: {"firstName":"Michael","lastName":"Jackson","balance":300.0,"accountTypeId":5}但这会打破 HATEOAS 范式。 POST/PUT 复合实体的最佳实践是什么?

最佳答案

与 HATEOAS 对抗的有效载荷没有什么特别之处;唯一真正的问题是 accountTypeId不是很容易发现。 (魔术 ID 总是最好映射到简短的描述性字符串;把它们想象成一个枚举。)使用 HATEOAS 模型时要记住的关键事情之一是用户发布的实体不需要是正是创建资源的实体;你可以修改它,注释它,翻译它。它在概念上应该仍然相同,但这与完全相同是完全不同的。 (添加 ID 和创建时间戳将是一个很好的例子,说明如何扩展是完全合理的。)

对我来说,听起来您真正的问题是您需要重新考虑客户端在执行 POST 时应该提交哪些信息,以及您打算如何告诉客户端在执行 POST 时他们应该提交该信息。我自己,我非常喜欢在这里使用 XML 进行上传,因为我可以很容易地告诉客户他们的 POST 有效负载应该符合特定的模式(而且 XML Schema 和 RELAX NG 都足够丰富,我可以描述这些约束)。我相信这不是唯一的方法。

关于rest - RESTFul HATEOAS API 中的 HTTP POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14870994/

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