我们正在使用 Dropwizard / Jersey 来构建 Web 服务。资源有路径,方法有子路径。当返回创建的响应(201)时,我们获取的方法的路径被添加到我们提供的位置。当返回一个位置的 OK 状态时(我知道是人为的),一切都很好,并且返回的位置就像我们提供的一样。
我们如何返回一个不是我们方法位置的子路径的位置?
在下面的示例中:访问“http://localhost/foo/bar”(创建状态)以“http://localhost/foo/bar/wibble”的位置响应(注意/foo/bar)
而对“http://localhost/foo/baz”(ok 状态)的访问则以“http://localhost/wibble”的位置响应,这正是我们想要的。
import javax.ws.rs.POST;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
import java.net.URI;
@Path("/foo")
public class FooResource {
@POST
@Path("/bar")
public Response bar() {
URI uriOfCreatedResource = URI.create("/wibble");
return Response.created(uriOfCreatedResource).build();
}
@POST
@Path("/baz")
public Response baz() {
URI uriOfCreatedResource = URI.create("/wibble");
return Response.ok().location(uriOfCreatedResource).build();
}
}