【发布时间】:2023-04-07 10:43:01
【问题描述】:
我有一个 REST API uploadFeed,它根据 feedType(作为请求正文的一部分输入的字符串值)上传用户提要。不同的 feedtype 在请求正文中提供了不同的 pojo 模型。
例如,如果 feedType 是“TYPE1”,那么 API 的请求正文应如下所示:
{
"feedType":"TYPE1",
"inputModel": {
"a": "somevalue"
"b" : "somevalue",
"c" : "somevalue",
}
}
如果 feedType 是“TYPE2”,那么 API 的请求正文应如下所示:
{
"feedType":"TYPE2",
"inputModel": {
"x": "somevalue"
"y" : "somevalue",
"z" : "somevalue",
}
}
uploadFeed API 的最佳 API 设计是什么。我正在考虑有两种可能的解决方案:
Solution Proposal-1:有两个不同的 API 端点。
feedType == Type1 的 API URI:/uploadFeed/feedType/{Type1}。这里的requestBody应该和上面提到的Type1一样
feedType == Type2 的 API URI:/uploadFeed/feedType/{Type2}。这里的requestBody应该和上面提到的Type2一样
Solution Proposal-2:有一个端点同时存在两个模型。 对于 TYPE1 的 feedType,预期的 requestBody 应为
{
"feedType":"TYPE1",
"type1Model": {
"a": "somevalue"
"b" : "somevalue",
"c" : "somevalue",
},
"type2Model" : null
}
对于 TYPE2 的 feedType,预期 requestBody 应为
{
"feedType":"TYPE1",
"type1Model" : null
"type2Model": {
"x": "somevalue"
"y" : "somevalue",
"z" : "somevalue",
},
}
有没有其他可能的方法。请提出可能的最佳解决方案(不一定是这两个)。
【问题讨论】:
标签: rest api api-design