我正在开发一个简单的restful webservice并且是一个新手。因此,我参考了基本教程并成功执行了它们。
以下是我为进一步着手而编写的示例代码
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;
import javax.ws.rs.Produces;
import javax.ws.rs.QueryParam;
import javax.ws.rs.core.MediaType;
@Path("/text/{sso}")
public class Do {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String simple(@PathParam("ss") @QueryParam("d") String params) {
return "Hello Jersey"+params;
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String advanced(@PathParam("as") @QueryParam("d") String params) {
return "Hello Jersey-----"+params;
}
}
我基本上需要的是在同一个类中公开两个不同的方法,并根据url访问相应的方法。
执行上述操作时会抛出以下错误 - com.sun.jersey.spi.inject.Errors $ ErrorMessagesException 如果我走在正确的轨道上,有人可以指导我吗?如果是,请告诉我我错过了哪里。如果不是这种情景的正确方法是什么?
答案 0 :(得分:2)
您的代码中存在两个问题。
@PathParam
注释需要应用于方法的参数@PathParam
注释的值需要与路径段匹配。您班级中唯一的路径段由此定义:
@Path("/text/{sso}")
并且值为'sso'。因此,您的代码看起来应该更像这样:
@Path("/text/{sso}")
public class Do {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String simple(@PathParam("sso") String sso,
@QueryParam("d") String params) {
return "Hello Jersey" + params;
}
@GET
@Produces(MediaType.TEXT_PLAIN)
public String advanced(@PathParam("sso") String sso,
@QueryParam("d") String params) {
return "Hello Jersey-----" + params;
}
}
答案 1 :(得分:0)
如果要匹配两个QueryParam
,您的方法必须包含两个参数。
public String simple(@PathParam("ss") String paramSs,
@PathParam("d") String paramD) {
// ...
}
@PathParam
是一个方法参数的注释。