Webサービスを構築するためにDropwizard/Jerseyを使用しています。リソースにはパスがあり、メソッドにはサブパスがあります。作成されたレスポンスを返すとき(201)、取得しているメソッドのパスが、与えられた場所の先頭に追加されます。私が知っているように思ったような場所でステータスOKを返すと、すべてがうまくなり、ロケーションを返されます。Javaxレスポンスは、Locationヘッダパスをステータス作成時に追加します。
メソッドの場所のサブパスではない場所を返すにはどうすればよいですか?以下の例では
: "のhttp:// localhostの/ fooの/バー" を取得(ステータスを作成したが)の場所で応答は "http:// localhostの/ fooの/バー/ 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();
}
}
ありがとう、私はそれを試してみます。現時点での回避策は、JSONにシリアル化されたオブジェクト内のURLとともにステータス200を返すことです。 –