我很乐意被指出答案,但我没有在搜索中找到答案。
Java REST可以使用类和方法的注释来实现,包括@Path注释以匹配URI。是否有注释或其他方法来匹配未与另一个注释明确匹配的任何内容。一个例子:
@Path("")
public class RestEntryPoint {
@GET
@Path("/{s:.*}")
@Produces(MediaType.TEXT_PLAIN)
public String anything(@Context UriInfo ui) {
return "anything at all..." + ui.getPath();
}
@GET
@Path("/restserver/heartbeat")
@Produces(MediaType.TEXT_PLAIN)
public String heartbeat() {
return "Jetty RestServer heartbeat";
}
}
http://localhost:8082/restserver/heartbeat/
...在浏览器中返回正确的文本(“Jetty RestServer heartbeat”)。但我希望任何其他URI都能使用方法anything(@Context UriInfo ui)
中的消息进行响应 - 但我只收到404.
如果可以通过其他方式完成,请告诉我如何操作。如果可以这样做(但不同),请告诉我更改。
答案 0 :(得分:1)
我认为你需要明确地将它映射到“/”,然后让方法听“。*”或“。+”:
@Path("/")
public class RestEntryPoint {
@GET
@Path("s:.*")
@Produces(MediaType.TEXT_PLAIN)
public String anything(@Context UriInfo ui) {
return "anything at all..." + ui.getPath();
}
@GET
@Path("restserver/heartbeat")
@Produces(MediaType.TEXT_PLAIN)
public String heartbeat() {
return "Jetty RestServer heartbeat";
}
}
这应该可以解决问题。
答案 1 :(得分:0)
只需在路径中添加斜杠即可。 像这样
@Path("/")
public class RestEntryPoint {
@GET
@Produces(MediaType.TEXT_PLAIN)
public String anything(@Context UriInfo ui) {
return "anything at all..." + ui.getPath();
}
@GET
@Path("/restserver/heartbeat")
@Produces(MediaType.TEXT_PLAIN)
public String heartbeat() {
return "Jetty RestServer heartbeat";
}
}