0

私は RESTlet Web サービスを開発しています。このために、Restlet 2.0 API を使用しています。

Web サービスに Filter と Validator を実装したいと考えています。

Filter を正常に実装しました。フィルター クラスでは、リクエストが認証されていることを確認しています。これは、有効なユーザーから呼び出されたことを意味します。リクエストを検証するためにヘッダー フィールドをチェックしています。これは私のコードです -

public class MyFilter extends Filter {

@Override
    protected int beforeHandle(Request request, Response response) {
           // Conditions to check the header feild
        }
}

そして、私のアプリケーションクラスは -

public class MyApplication extends Application{

    @Override
    public Restlet createInboundRoot() {

                Router router = new Router(getContext());

        Filter filter = new MyFilter(getContext());
        filter.setNext(MyWebservice.class);
        router.attach("/myWebservice", filter);

                return router;
         }
}

Validator クラスを実装して、リクエストに必要なパラメーターが含まれていることを確認します。フィルターの後にバリデーターをフォローしたい。ただし、アプリケーション クラスでは、Filter または Validator のいずれかを提供できます。フィルターを使用してバリデーターを実装する例がありません。

ですから、restlet で Filter を使用して Validator を実装するのを手伝ってください。

4

1 に答える 1

0

「責任の連鎖」パターンを使用するように設定されています。バリデーターを Resource クラスの代わりに「Next」に設定してみてください。これにより、リソースがチェーンの次のように設定されます。

あなたのコードを微調整しました:

@Override
public Restlet createInboundRoot() {

        Router router = new Router(getContext());

        Filter filter = new MyFilter(getContext());
        filter.setNext(new MyValidator(getContext(), MyWebservice.class));
        router.attach("/myWebservice", filter);

        return router;
     }
}
于 2013-09-03T10:32:18.780 に答える