Order of Operations wiki ページには、独自のカスタマイズされた動作を挿入するために利用できるさまざまなフックの数と、それらが実行される順序が示されています。
RawHttpHandlers によるハイジャック リクエスト
ハイジャックしたいリクエストに対してaConfig.RawHttpHandlers
を返す a を追加することで、ServiceStack を完全にバイパスできます。IHttpHandler
ssr-
config.RawHttpHandlers.Add((IHttpRequest request) => {
var file = GetFileNameWithoutExtension(request.PathInfo);
return file != null && file.StartsWith("ssr-")
? new MiniProfilerHandler()
: null;
}
一致しないルートのフォールバック ハンドラーを提供する
一致しないルートのデフォルト ハンドラーを提供する場合は、CatchAllHandlersをプラグイン内AppHost.Configure()
またはプラグイン内に登録できます。
appHost.CatchAllHandlers.Add((string method, string pathInfo, string filepath) =>
{
return ShouldProvideDefaultPage(pathInfo)
? new RazorHandler("/defaultpage.cshtml")
: null;
});
ワイルドカードを使用してサービス内の任意の URL を受け入れる
ダミーのサービスを作成して、単純に同じ単一のビューを返すことができます。たとえば、次のようになります。
[Route("/app/{PathInfo*}")]
public class App {
public string PathInfo { get; set; }
}
public class MyService : Service
{
public object Any(App request)
{
return request;
}
}
ワイルドカードを使用すると、このサービスはビューを返します。たとえば/View/App.cshtml
、 で始まる任意のルートで次のようになります/app
。
- /アプリ
- /アプリ/こんにちは
- /app/hello/my/name/is?foo=bar
部分的なページのサポート
部分的なリロードは pushstate に関連しているため、部分的なリロードに対する ServiceStack の組み込みサポートについても言及します。
ServiceStack Docsは、pushstate をサポートするブラウザーで pushstate を使用するサンプル デモです。それ以外の場合は、サポートしていないブラウザーでフルページ リロードを使用するようにフォールバックします。
?format=text.bare
たとえば、paramを使用して部分ページを要求できます。
これはMarkdown Razorを使用していますが。最新の ServiceStack.Razor サポートでは、次の方法で部分ページにアクセスできます。?format=bare