我需要实现一个使用第一个查询参数来识别操作的网络服务,即客户端调用将类似于:http://localhost:8080/ws/operation?info
or http://localhost:8080/ws/operation?create&name=something
.
看来我无法区分使用 @Path 注释的方法,因为区别特征在于查询参数中。下面的例子也抛出异常:
package com.example.ws;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
@Path("/operation")
public class Operation {
@GET
public String info(@QueryParam("info") String info) {
return "info";
}
@GET
public String create(@QueryParam("create") String create) {
return "create";
}
}
有没有办法根据查询参数指定要使用的方法?或者我真的必须定义一种方法并在该方法中检查是否设置了某些查询参数?
我看到这个问题已经得到解答,但我遇到了类似的问题并使用子资源实现了解决方案。
package com.example.ws;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.QueryParam;
@Path("/")
public class Operation {
@Path("/")
public Object sub(@QueryParam("operation") String operation)
{
if ("info".equals(operation))
return new InfoOp();
if ("create".equals(operation))
return new CreateOp();
//handle via error code
}
public class InfoOp {
@GET
public String info() {
return "info";
}
}
public class CreateOp {
@GET
public String create(@QueryParam("name") String name) {
return "create: " + name;
}
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)