私は3つのタイプのREST URLに対応するために取り組んでいます:
url/detail/3
(整数のみ)url/detail/hello
(文字列のみ)url/detail/3/1d
私が使用している URL 1 と 3 にはmethod1
、URL 2method2
が使用されています。
問題 1: 1 と 2 のすべてのリクエスト タイプは方法 2 のみに一致します。特に整数を持つクエリの方法 1 で整数パターンを指定しましたが。
問題 2:オプションのパラメーターを使用するには (3 のように) jersey はオプションのパラメーターのオプションを提供しないためurl/detail/3/1d
、メソッド 1 を使用しています。
私はジャージの初心者なので、私が間違っていることを理解するのを手伝ってください.
@GET
@Path("/detail/{id: \\d+}/{time-period:(/time-period/[^/]+?)?}")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes(MediaType.APPLICATION_JSON)
public JResponse method1(
@Context HttpHeaders headers,
@PathParam("id") String id,
@PathParam("time-period") String timePeriod) {
if(timePeriod == null || timePeriod.equals(""))
{
//code
}
else
//code
}
@GET
@Path("/detail/{name}")
@Produces({ MediaType.APPLICATION_JSON })
@Consumes(MediaType.APPLICATION_JSON)
public JResponse method2(
@Context HttpHeaders headers, @PathParam("name") String name) {
//code
}