1

DB にクエリを実行し、データを戻すという単純な作業を行う Restful WS を開発しています。クエリを実行しているテーブルには、約 20 列あります。

SQL ステートメントの WHERE 句でマトリックス パラメーターを使用して、返されたレコードをフィルター処理できるようにしたいと考えています。

例: テーブル People に id、firstname、lastname の列があるとします。

http://localhost:808/myservice/people;firstname=nick ファーストネームが Nick ( ) と等しいすべての人を戻すURL が必要ですselect * from people where firsname='Nick'

まず第一に、これはそれを行うための正しい練習ですか? 次に、20 列あるタブレットで、考えられるすべてのマトリックス パラメータ (以下を参照) を含むメソッドを Java コードで作成する必要があります。

public Response getPeople(@MatrixParam("id") String id,
            @MatrixParam("firstname") String firstname,
                    @MatrixParam("lastname") String lastname,
                    @MatrixParam("antoherColumn") String antoherColumn,
                    @MatrixParam("antoherColumn") String antoherColumn,
                    @MatrixParam("antoherColumn") String antoherColumn,
                    @MatrixParam("antoherColumn") String antoherColumn,
                    @MatrixParam("antoherColumn") String antoherColumn,
                    @MatrixParam("antoherColumn") String antoherColumn,
                    @MatrixParam("antoherColumn") String antoherColumn,
                    @MatrixParam("antoherColumn") String antoherColumn,) {

}

前もって感謝します

4

2 に答える 2

0

MatrixParam をオブジェクトにマップするには、@BeanParam を使用する必要があります。

このようにして、リソースを非常にシンプルに保つことができますが、マトリックス パラメーターをさらに追加する可能性があります。また、マトリックス パラメータを追加しても、リソースの変更はまったく必要ありません。@BeanParam は、@PathParam および @QueryParam でも機能します。

例: 次のことを考慮してください。

http://localhost:8081/myservice/people;firstname=nick,lastName=smith/?offset=3&limit=4

次にリソース:

@GET
public Response get(@BeanParam Filter filter, @BeanParam Paging paging) {
    return Response.ok("some results").build();
}

Filter クラスは次のようになります。

public class Filter {

    public Filter(@MatrixParam("firstname") String firstname, @MatrixParam("lastname")  String lastname) {}
}

およびページング クラス:

public class Paging {

public Paging(@QueryParam("offset") int offset, @QueryParam("limit") int limit) { }
}

よりモジュール化するために、Filter1、Filter2 などのフィルターをさらに使用することもできます。

マトリックス パラメーターを使用する最大の利点は、キャッシュです。../animals;size=medium/mamals;fur=white/?limit=3&offset=4のように、API に複数のレベルがある場合は、クエリ パラメータがすべてのコレクションに適用されるため、さらに理にかなっています。

于 2013-12-18T10:27:54.007 に答える