Restful
サービスを初めて利用しています。私はコードを通過してこの行を見つけました@Pathアノテーション内のコロン(:)の意味
@GET
@Path("{image:image/.*}")
誰かが上記の構文の意味と使い方を説明できますか?
Restful
サービスを初めて利用しています。私はコードを通過してこの行を見つけました@Pathアノテーション内のコロン(:)の意味
@GET
@Path("{image:image/.*}")
誰かが上記の構文の意味と使い方を説明できますか?
@Path
表記法は、パスに一致する正規の文字列またはパターンに一致する正規表現をサポートします。あなたのケースでは
@Path("{image:image/.*}")
だけで基本的に画像/何に変換した画像のような任意のパターン/.*、と
パスのparam {画像}のパターンに一致しているようだ、何がここにいません「何か」という言葉を指すが、その文字通りの意味、すなわち有効なテキストを指す。
訂正: は完全な詳細について@Sotirios Delimanolisの答えを参照してください。訂正入力のためのおかげです。
この表記法はURIパステンプレートとして知られており、documentationに記載されています。
新しいテンプレート変数は、角括弧{}
で宣言して定義します。 JX-RS環境は、対応するパスセグメントを要求されたURIから、宣言された@PathParam
ハンドラメソッドパラメータにバインドします。
ドキュメントからURIパステンプレートは、URI 構文内に埋め込まれた変数とのURIです。これらの変数は、 リソースが置換されたURIに基づいて要求に応答するために、実行時に置換されます。 変数は中括弧({
および}
)で示されます。例えば、@Path
注釈以下 を見て:例のこの種の@Path("https://stackoverflow.com/users/{username}")
、ユーザーが自分の名前を入力するように促され、 、その後に要求に応答するように構成されたJAX-RS Webサービス このURIパステンプレートが応答します。 「ガリレオ」のWebサービスは、次のURLに応答し、ユーザがタイプ ユーザー名たとえば、ユーザ名の値を取得するには
http://example.com/users/Galileo
、
@PathParam
注釈は上 を使用することができますリクエストメソッドの方法パラメータ、 次のコード例に示されるように:ドキュメントは、次に表記するための構文を指定するために行く@Path("https://stackoverflow.com/users/{username}") public class UserResource { @GET @Produces("text/xml") public String getUser(@PathParam("username") String userName) { ... } }
デフォルトでは
、URI変数は正規表現 「[^ /] +と一致する必要がありますか?この変数は、変数名後の異なる 正規表現を指定することにより、カスタマイズすることができる。たとえば、ユーザー 名が変数 にデフォルトの正規表現をオーバーライドし、小文字と大文字の英数字 文字のみから構成されなければならない場合は、「。定義:
@Path("users/{username: [a-zA-Z][a-zA-Z_0-9]}")
この例では、ユーザ名変数は1つの大文字または小文字と0個以上の 英数字とアンダースコア文字で始まる のみのユーザー名と一致する場合は、ユーザー名 D。そのテンプレートと一致しない場合、404(Not Found)応答がクライアントに として送信されます。
だからあなたの例では、
@Path("{image:image/.*}")
正規表現
image/.*
に一致するセグメントを含むimage
という名前URIテンプレート変数を定義する ため、要求のためのあなたのアノテーション付きメソッドを使用しますJAX-RS環境一致するURIへ
http://somehost.com/context-path/image/[anything]
おそらく、あなたのメソッドは、パラメータ
@Path("{image:image/.*}")
public Response handle(@PathParam("image") String path) { /* handling */ }
とpath
が"image/[anything]"
の価値を持っているでしょうだろう。
正規表現のちょうど一部が使用されています... –
@JunedAhsan少なくとも「image:」プレフィックスではありません。 –