【发布时间】:2019-11-12 03:26:00
【问题描述】:
我有一个 ID REST API,我需要扩展它以支持多个(最多 10Ks)ID。基本上是在所有相关 ID 上运行更新,而不是在网络中发送 10Ks 请求。
当前端点:
@POST
@Path("{id}/update")
@Produces(MediaType.APPLICATION_JSON)
@Consumes(MediaType.APPLICATION_JSON)
public ResponseVO updateBlockReason(@PathParam("id") int id, List<RequestVo> requestVo) {
一个选项suggested 是stackexchange's answers-by-ids 的逗号分隔值
/answers/{ids} GET 的使用
{ids} 最多可以包含 100 个分号分隔的 id。要以编程方式查找 id,请在 answer 对象上查找 answer_id。
similar answers就是这种情况
http://our.api.com/Product/<id1>,<id2>:正如詹姆斯建议的那样,可以选择,因为产品标签后面的内容是一个参数
但这对我来说似乎很尴尬,RequestVo 对于所有 ID 都是相同的(目前很好,但以后添加这样的支持会更难)
看来我需要从 Path 变量中更改以将其添加到 RequestVO 中
这意味着 Id 将是 JSON 密钥,例如
[{
"id" : "1",
"name": "myAttribute"
"toggle": true
},
{
"id" : "2",
"name": "mySecondAttribute"
"toggle": false
}
]
这是正确的方法还是我遗漏了什么?
提前感谢您提供任何 cmets\answers
当前请求语音
@Data
@AllArgsConstructor
@NoArgsConstructor
public class RequestVO {
private String name;
private boolean toggle;
// will add now private int id
}
我还担心,如果我想(其中一项要求)使用相同的请求(如 name=doA,toggle=true)更新 10Ks Id,我将不得不复制请求 VO 而不是单独发送 ID
【问题讨论】:
-
我会在请求正文中添加标识符列表,拥有大量请求参数有点尴尬。
-
@TA 所以我的方法是正确的
-
我不太明白您的
RequestVo与您的标识符有什么关系,您能详细说明一下吗?如果你想为每个 id 更新这些对象,除了你的List<RequestVo> requestVo之外,我只会传递一个List<Integer> ids而不是合并这两个。 -
@TA 合并时不会引起问题吗?如果我会在 RequestVO 中获得 5 号 id 和 2 号?
-
为什么不添加一个像
updateBlockReasonBatch这样没有{id}路径变量的新端点,而只使用一个带有id列表的主体?
标签: java json rest extending multiple-input