0

RestEasy と Jax-Rs を使用して、リクエストを Java アプリケーションの適切なリソースにルーティングしようとしています。ただし、 @ApplicationPath アノテーションの使用に問題があります。パターンを渡して、そのパターンに一致するものを適切な場所にルーティングさせたい

私はこれを試しました:

@ApplicationPath("*/rest/v1/")...

次のようなパスをルーティングできます。

/MyApplication/rest/v1/

また

/AnotherApp/rest/v1/

同じアプリケーションに。

ただし、RestEasy はリソースと一致しないという 404 を返しますが、*/ なしでパスをハードコーディングすると、正常に動作します。@ApplicationPath にこのようなパターンを入れることは可能ですか?

編集:

これの全体的な目的は、アプリケーションのルート パスを構成可能にし、フィルターを通過させて構成を確認することでした。しかし、おそらく実行時に @ApplicationPath を構成する方法があれば、それはさらに優れたソリューションになります。

4

1 に答える 1

0

@ApplicationPathアプリケーション レベルのプレフィックスです。つまり、すべてのパスは指定された値で始まる必要があります。

個々のリソースについては、 を使用します@Path

@Path アノテーションは単純なパス式に限定されません。@Path の値に正規表現を挿入することもできます。例えば:

@Path("/resources)
public class MyResource {

   @GET
   @Path("{var:.*}/stuff")
   public String get() {...}
}

次の GET は getResource() メソッドにルーティングされます。

GET /resources/stuff
GET /resources/foo/stuff
GET /resources/on/and/on/stuff

式の形式は次のとおりです。

"{" variable-name [ ":" regular-expression ] "}"

正規表現部分はオプションです。式が指定されていない場合、デフォルトで 1 つの特定のセグメントのワイルドカード マッチングになります。正規表現用語では、式のデフォルトは "([]*)" です。

例えば:

 @Path("/resources/{var}/stuff") 

これらに一致します:

GET /resources/foo/stuff
GET /resources/bar/stuff

しかし、一致しません:

GET /resources/a/bunch/of/stuff

リンク: http://docs.jboss.org/resteasy/docs/1.0.0.GA/userguide/html_single/

于 2013-06-21T14:24:01.237 に答える