2016-11-09 8 views
1

私はジャージ2とサーブレット3を使用してRESTサービスを作成しています。カスタムGETメソッドがあります。ヘッダーが存在しない場合は、例外がスローされます。 "親のような" @GETメソッドを提供する方法はありますか?それは、対応する@Path-linkに進む前に特定のヘッダーを持つリクエストを拒否しますか?同様に、サービスの名前がmyServiceで、@Pathが "getHello"の場合、ヘッダーを最初にチェックしてからmyService/getHello注釈付きメソッドに移動する方法は?あなたは、リソースを登録するには、パッケージのスキャンを使用している場合Java残り全体の取得フィルタを作る方法

+0

はあなたのヘッダーを検証するためにインターセプタを使用することができます。 –

+0

これをチェックしましたか?https://jersey.java.net/documentation/latest/filters-and-interceptors.html - ContainerRequestFilter – Waqas

答えて

1

あなたは

@Provider 
public class CheckHeaderFilter implements ContainerRequestFilter { 
    @Override 
    public void filter(ContainerRequestContext context) { 
     if (context.getMethod().toUpperCase().equals("GET")) { 
      String header = context.getHeaderString("SomeHeader"); 
      MultivaluedMap<String, String> headers = context.getHeaders(); 
      if(notValidHEaders) { 
       context.abortWith(Response.status(400).entity("Bad").build()); 
       // or throw WebApplicationException 
      } 
     } 
    } 
} 

ContainerRequestFilterを使用して方法を確認することができ、フィルタも拾っているため@Provider注釈の登録を受ける必要があります。そうでなければ、あなたはそれを自分で登録する必要があります

も参照してください:あなたが春を使用している場合

関連する問題