gpt4 book ai didi

java - 为什么这个 REST 服务没有返回,而另一个则返回?

转载 作者:行者123 更新时间:2023-12-01 09:02:41 24 4
gpt4 key购买 nike

情况在下面的代码中,您可以看到 2 个 REST 服务,它们都应该返回 MessageVO。第一个服务 (serviceThatDoesWork) 按预期返回 MessageVO,但第二个服务 (serviceThatDoesNotWork) 拒绝返回,它甚至根本不提供任何输出。然而,使用 serviceThatDoesNotWork 返回响应 (java.ws.rs.core.Response) 确实会给出输出。即使我跳过“doStuff”方法并创建一个对于每个服务完全相同的虚拟 MessageVO,第二个也不会返回任何内容。

问题为什么第二个服务无法返回 MessageVO?当我尝试返回 MessageVO 时,它不会返回任何内容,并且日志记录中也没有出现任何异常情况。这两个服务需要返回完全相同的东西,但其中一个仍然不想返回任何东西,我在这里没有看到什么?是否是因为路径(和/或参数数量)?

代码MyServices.java:

@Path("/myService")
...
@GET
@Produces(MediaType.APPLICATION_JSON)
@Path("/myPath/{param1}/{param2}/{param3}")
public MessageVO serviceThatDoesWork(@PathParam("param1") Integer param1_id, @PathParam("param2") Integer param2_id, @PathParam("param2") Integer param2_id)
{
List<SomethingVO> lstO = MyRestServiceBusiness.doStuff(param1_id, param2_id, param3_id);

//return SUCCESS or FAIL message
MessageVO msg = new MessageVO();
if(lstO.size() > 0)
{
List<String> s = new ArrayList<String>();
for(SomethingVO k : lstO)
{
s.add(k.getId().toString());
}
msg.setItem_ids(s);
msg.setMsg("SUCCESS");
}
else
{
msg.setMsg("FAIL");
}
return msg;
}
...
@GET
@Path("/myPath/{param1}/{param2}/{param3}/{param4}/.../{param15}{a:(/a/[^/]+?)?}{b:(/b/[^/]+?)?}")
public Response serviceThatDoesNotWork(@PathParam("param1")Integer param1_id, ..., @PathParam("param15") Integer param15_id,
@PathParam("a") String a_id, @PathParam("b") String b_id)
{
//PUT 'OPTIONAL' PARAMS IN A LIST
List<Integer> lstI = new ArrayList<Integer>();
String aId = a_id != null ? a_id.split("/")[2] : null;
String bId = b_id != null ? b_id.split("/")[2] : null;
if(aId != null)
{
lstI.add(Integer.parseInt(aId ));
}
if(bId != null)
{
lstI.add(Integer.parseInt(bId ));
}

//DO STUFF
String afsId = "";
if(lstI.size() > 0)
{
afsId = MyRestServiceBusiness.doStuff(param1, ..., lstI);
}

//return SUCCESS or FAIL message
MessageVO msg = new MessageVO();
if(afsId != null && !afsId.isEmpty())
{
List<String> s = new ArrayList<String>();
s.add(afsId);
msg.setItem_ids(s);
msg.setMsg("SUCCESS");
}
else
{
List<String> s = new ArrayList<String>();
for(Integer i : lstI)
{
s.add(i.toString());
}
msg.setItem_ids(s);
msg.setMsg("FAIL");
}

//WENT THROUGH ALL ABOVE CODE AS EXPECTED, MESSAGEVO HAS BEEN FILLED PROPERLY
return msg;
}

代码 MessageVO.java:

@XmlRootElement
public class MessageVO
{
private String msg;
private List<String> item_ids;


//GETTERS
@XmlElement(name = "Message")
public String getMsg() {
return msg;
}
@XmlElement(name = "Item ID's")
public List<String> getItem_ids() {
return item_ids;
}


//SETTERS
public void setMsg(String msg) {
this.msg = msg;
}
public void setItem_ids(List<String> item_ids) {
this.item_ids = item_ids;
}
<小时/>

如果我需要提供额外信息,请询问,这是我第一次尝试(REST-)服务。

最佳答案

正如 Vaseph 在评论中提到的,我只是忘记了第二个服务中的 @Produces 注释。

关于java - 为什么这个 REST 服务没有返回,而另一个则返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41548460/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com