LoginSignup
4
1

More than 5 years have passed since last update.

jerseyの@QueryParamと@PathParamはURLデコードを自動でする

Posted at

jersyでは、下記のような@QueryParam@PathParamなどで受け取った値は、標準では自動でURLデコード処理がかけられています。

このことはjavadoc にももちろん書かれています。

@GET
public Response findByName(@QueryParam("name") String name) {
   // このときnameという変数はURLデコード済みの状態
   /* 中略 */
}

URLデコード処理をして欲しくないときは@Encoded のアノテーションを追加で付与すればよいです。このアノテーションはclassにもつけられ、その場合はそのクラスの全てのメソッドの全てのパラメタに適用されます。

@GET
public Response findByName(@QueryParam("name") @Encoded String name) {
   // このときnameはリクエストされたURLのままの状態
   /* 中略 */
}

暗号化されたトークンなど、そのままの状態で扱いたい場合は、上記のようにデコード処理をさせないようにするか、URLセーフなものにするかです。

また、Json Web Tokens でも、URLセーフなトークンを実現できます。

 参考サイト

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1