路径参数将传入的 URL 和路径的匹配部分作为参数。通过在 @Path 注释中包含 {name},资源可以稍后访问 URI 的匹配部分,以访问具有相应“名称”的路径参数。路径参数将请求 URL 的一部分作为参数,在将请求参数信息嵌入到简单 URL 时很有用。
@Path("/books/{bookid}")
public class BookResource {
@GET
public Response invokeWithBookId(@PathParam("bookid") String bookId) {
/* get the info for bookId */
return Response.ok(/* some entity here */).build();
}
@GET
@Path("{language}")
public Response invokeWithBookIdAndLanguage(@PathParam("bookid") String bookId, @PathParam("language") String language) {
/* get the info for bookId */
return Response.ok(/* some entity here */).build();
}
}
在你的休息代码参数Info
中取值,@Path("/songs/{json}")
但你已经指定@Path("/songs/")
,所以json
将永远是null
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
MediaType.TEXT_XML })
@Path("/songs/")
public Room AddSong(@PathParam("json") String Info) {
Song newSong = new newSong();
newSong.addSong(Info);
return newSong;
}
你这样做,然后一切都会好起来的:
@POST
@Consumes(MediaType.APPLICATION_JSON)
@Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML,
MediaType.TEXT_XML })
@Path("/songs/{json}")
public Room AddSong(@PathParam("json") String Info) {
Song newSong = new newSong();
newSong.addSong(Info);
return newSong;
}
有关更多信息,请参阅JAX-RS 参数