我正在尝试制作两种类型的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"
}
]
答案 0 :(得分:2)
也许您可以使用@QueryParam来确定端点需要哪个选项并调用适当的方法,例如&#34; batch = true&#34;或者你可以有一条路径&#34; / batch&#34;插入多个记录。
答案 1 :(得分:0)
我认为单个端点足以实现此目标。如果我们传入对象列表,则应根据列表的大小创建对象。
在后端,您可以遍历列表以将对象添加到数据库。如果请求列表中只有一个对象,则创建一个对象;如果请求列表中包含多个对象,则创建多个对象。