2016-06-23 6 views
4

CXFのリラックスできるウェブサービスを構築するためにこのリンクをたどっていますurl linkCXFの快適なウェブサービスでオプションのパラメータを処理する方法

後述するように、私のURLがあると仮定した場合:

ここ
http://localhost:8080/CxfRestService/rest/employeeservices/getemployeedetail?employeeId=1&empProfession=software 

、 "empProfession" パラメータは私のためのオプションです。

私はこのパラメータを省略して、下のURLをヒットしても、必要な応答を取得する必要があります。 http://localhost:8080/CxfRestService/rest/employeeservices/getemployeedetail?employeeId=1

CXF Restful Webservicesでオプションのパラメータを使用する方法を教えてください。

答えて

2

オプション1 - !パラメータを宣言しているかどうかを確認= nullを

public Response getEmployeeDetail(@QueryParam("employeeId") String employeeId, @QueryParam("empProfession") String empProfession); 

オプション2 -

public Response getEmployeeDetail(@QueryParam("") EmployeeFilter filter) ; 

public class EmployeeFilter { 
    public void setEmployeeId(String id) {...} 
    public void setEmpProfession(String p) {...} 
} 

すべての既知のパラメータを受信するオブジェクトエン宣言オプション3 - パラメータを宣言し、解析しないでください。 URI。あなたが実際に

public Response getEmployeeDetail(@Context UriInfo uriInfo) { 
     MultivaluedMap<String, String> params = uriInfo.getQueryParameters(); 
     String employeeId = params.getFirst("employeeId"); 
     String empProfession = params.getFirst("empProfession"); 
0

非固定パラメータを受け入れることができる場合、このオプションは有用である可能性、CXFのすべてのパラメータは必須ではありません、あなたが使用して春RESTと比較例を行うことができますよう、あなたは@QueryParamを(使用してこれを変更することはできません@RequestParam(必須= false))。

解決策は、パラメータが必須であることを示すために@NotNull javax.validationアノテーションを追加することです。

この方法で、あなたは@Validを使用して自動的にそれを検証するために

  • CXF3 ValidationFeatureを使用することができます。
  • CXF3 SwaggerFeatureも
  • CXF2 javax.validation注釈を使用して上の詳細はCXF3 ValidationFeatureを参照してください豆の検証手動

を行うAPIドキュメントに必須パラメータをレンダリングします:https://cwiki.apache.org/confluence/display/CXF20DOC/ValidationFeatureについて

もっとCXF3スワッガー機能:http://cxf.apache.org/docs/swagger2feature.html)。

この回答は関連しています。Required @QueryParam in JAX-RS (and what to do in their absence)

関連する問題