Jersey具有相同路径的多个POST方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jersey具有相同路径的多个POST方法相关的知识,希望对你有一定的参考价值。
我正在尝试制作两种类型的POST方法,这两种方法都创建对象并填充数据库。
方法1将单个对象添加到数据库。
方法2将数组对象添加到数据库中。
// Create new agent status
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createAgentStatus(@Context HttpServletRequest request, AgentStatus agentStatus) {
...
}
// Create multiple agent statuses at once
@POST
@Consumes(MediaType.APPLICATION_JSON)
public Response createAgentStatuses(@Context HttpServletRequest request, Collection<AgentStatus> agentStatuses) {
...
}
正如预期的那样,我收到错误,因为泽西岛无法区分这两条路径。两个POSTS都被视为与泽西相同,因此无法根据我的输入判断哪一个路由到哪个。
我怎样才能让泽西可以检测我输入的格式并相应地路由?谢谢
例如:
方法1 JSON输入(createAgentStatus):
{
"agentId":"A123456",
"agentStatus":"NOTREADY",
"timeStamp":"2015-10-08T13:37:32:235Z",
"reason":"Break",
"reasonCode":"100"
}
方法2 JSON输入(createAgentStatuses):
[
{
"agentId":"A123456",
"agentStatus":"NOTREADY",
"timeStamp":"2015-10-08T13:37:32:235Z",
"reason":"Break",
"reasonCode":"100"
},
{
"agentId":"B654321",
"agentStatus":"AVAIL",
"timeStamp":"2015-10-08T13:37:32:235Z",
"reason":"Call",
"reasonCode":"200"
}
]
答案
也许您可以使用@QueryParam来确定端点需要哪个选项并调用适当的方法,例如“batch = true”,或者您可以使用路径“/ batch”来插入多个记录。
另一答案
我认为单个端点足以实现这一目标。如果我们传入一个对象列表,它应该根据列表的大小创建对象。
在后端,您可以遍历列表以将对象添加到数据库。如果请求列表只有一个对象,则创建单个对象,如果它有多个对象,则创建多个对象。
以上是关于Jersey具有相同路径的多个POST方法的主要内容,如果未能解决你的问题,请参考以下文章
在 TabLayout 和 ViewPager2 中执行异步任务后更新具有相同布局的多个片段
使用具有不同片段字段的相同中继根查询的多个 react-router-relay 路由