Dojo フレームワークのRestStoreによって消費される RESTful サービスを実装しています。これにより、インタラクティブ グリッドや先行入力 ajax 選択などのさまざまなウィジェットにサービスをバインドできます。
は、クエリの結果を特定のサブレンジに制限するために、HTTPおよびヘッダーRestStore
を送受信したいと考えています。Range
Content-Range
サービスの一部として HTTP ヘッダーに反応するための ServiceStack (新しい API) のベスト プラクティス パターンは何ですか? 通常、Get
代替 API を見逃していない限り、このようなサービス メソッドは HTTP ヘッダーにアクセスできません。
私が見る現在の方法は、次のような属性を実装することです
public class RangeSupporter : Attribute, IHasRequestFilter, IHasResponseFilter
リクエストに応じてヘッダーを解析し、レスポンスにヘッダーを書き込みます。DTO は、このフィルターに対してマークされます。
フィルターは、「最初」と「最後」などの値を DTO の内外に転送します。ただし、DTO にそのような属性があることを知るには、次のようなマーカー インターフェイスが必要です。
interface IHasRangeSupport {
int First { set; get; }
int Last { set; get; }
int Total { set; get; }
}
フィルターが DTO との間で情報を転送できるように、次のようなコードを使用します。
var r = request as IHasRangeSupport;
if (r != null) {
/// Access the DTO attributes for the range parameters
}
これは多くの式典のようで、非常に厄介な実装です。
REST サービスを実装するときに HTTP ヘッダーにアクセスするためのより良いパターンはありますか?
私の特定のユース ケースでは、REST 以外のエンドポイント (SOAP など) をサポートする必要はありません。HTTP エンドポイントのみが重要です。