提问人:komen 提问时间:11/15/2023 更新时间:11/15/2023 访问量:25
在不中断客户端的情况下使用 REST API 中的新属性扩展 JSON 响应?
Extend JSON response with new property in REST API without breaking clients?
问:
如果有一个带有 GET 端点的 REST API,比如 /api/v1/unit/{id},它会返回一个描述单元的 JSON,如下所示:
{
"id":123,
"a":123
}
我是否可以使用新属性扩展返回的 JSON,并确保这不会给端点的当前使用者带来麻烦? 新的 JSON 将如下所示:
{
"id" : 123,
"a" : 123,
"b" : 123
}
或者这是不好的做法,我应该创建一个返回 json 的“新版本”的新端点?例如:/api/v2/unit/{id}
答:
0赞
Michael Gantman
11/15/2023
#1
首先 - 关于打破客户端。这取决于您的客户。例如,如果你的 Json 被 Java 代码使用,有一种方法可以确保可以忽略未知的新属性。因此,您需要检查您的客户端是否可以处理此问题,以及它是否是默认行为,或者您是否需要修改客户端才能处理此问题。但一般来说,可以扩展你的 JSON 并让旧客户端工作。但是,您的新房产毫无用处 - 至少对老客户而言是这样。虽然这是可能的,但制作一个新的端点似乎是一个更干净的解决方案
评论
0赞
komen
11/15/2023
我认为这种情况存在一些最佳实践。我知道新属性对老客户毫无用处,因为他们(还)不知道,他们只关心“id”和“a”。但是新客户也对“b”感兴趣,这就是为什么我想在现有的 json 后面附加一个新属性,而不是创建一个全新的端点。
0赞
Michael Gantman
11/15/2023
这实际上取决于您的配置和应用程序。这两种方法都是有效的。您只需要了解优缺点并选择最适合您的一种
评论