web-dev-qa-db-ja.com

REST APIとオプションのパラメーターを作成するには?

これらのパスパラメーターを使用してAPIを実装する必要があります。

@Path("/job/{param1}/{optional1}/{optional2}/{param2}")

オプションで2番目と3番目のパラメーターを使用できますか?したがって、クライアントはこれらを渡す必要はありませんが、最初と最後を渡す必要があります。

これが不可能な場合、この方法でパラメーターを再配置することをお勧めしますか?

@Path("/job/{param1}/{param2}/{optional1}/{optional2}")

オプションのパラメータを提供するには?

10
mbgsuirp

RESTリクエストで終わるパス全体を一致させることができます

@Path("/location/{locationId}{path:.*}")
public Response getLocation(
    @PathParam("locationId") int locationId,
    @PathParam("path") String path) {
    //your code
}

これで、パス変数にはlocation/{locationId}の後のパス全体が含まれます

正規表現を使用して、パスをオプションにすることもできます。

@Path("/user/{id}{format:(/format/[^/]+?)?}{encoding:(/encoding/[^/]+?)?}")
public Response getUser(
    @PathParam("id") int id,
    @PathParam("format") String format,
    @PathParam("encoding") String encoding) {
    //your code
}

これで、フォーマットとエンコードがオプションになります。空になる値は指定しません。

3
Emdadul Sawon

オプションのパスパラメータをクエリパラメータに変える方が簡単な場合があります。その後、必要に応じて@DefaultValueを使用できます。

@GET @Path("/job/{param1}/{param2}")
public Response method(@PathParam("param1") String param1,
    @PathParam("param2") String param2,
    @QueryParam("optional1") String optional1,
    @QueryParam("optional2") @DefaultValue("default") String optional2) {
  ...
}

その後、/job/one/two?optional1=testを使用して呼び出して、必要なオプションパラメータのみを渡します。

16
Jorn

パラメーターを再配置して、次を試してください。

@Path("/job/{param1}/{param2}{optional1 : (/optional1)?}{optional2 : (/optional2)?}")
public Response myMethod(@PathParam("param1") String param1,
                         @PathParam("param2") String param2,
                         @PathParam("optional1") String optional1,
                         @PathParam("optional2") String optional2) {
    ...
}
1
cassiomolin