ServiceStack 的metadata page 不可自定义,但您应该能够轻松创建自己的自定义视图,以您喜欢的方式显示。 ServiceStack 中关于您的服务的元数据可从 IAppHost.Metadata API 获得,该 API 返回填充的 ServiceMetadata 对象图。
如果您启用#Script Pages,您可以将集合注册为全局变量:
Plugins.Add(new SharpPagesFeature {
Args = {
{"meta", HostContext.Metadata},
}
});
然后在 /metaview.html 这样的自定义页面中,您可以根据需要对服务进行分组、排序和排序,例如这是grouping 可用操作的示例,按命名空间并显示指向每个操作 JSON 元数据页面的链接:
{{ meta.Operations |> groupBy => it.RequestType.Namespace |> to => namespaces }}
{{#each namespaces}}
<b>{{it.Key}}</b>
<ul>{{#each it}}<li><a href="/json/metadata?op={{it.Name}}">{{it.Name}}</a></li>{{/each}}</ul>
{{/each}}
此meta 集合在您的Debug Inspector 中可用,它为您提供了一个交互式游乐场,可以即时反馈您希望如何显示您的服务,您可以将其粘贴到您的/metadata/debug page 以查看输出:
这使您可以快速尝试布局,例如如果您只想显示自己的 ServiceStack 服务而不显示任何 ServiceStack 服务,您可以像这样过滤它:
{{ meta.Operations |> groupBy => it.RequestType.Namespace |> to => namespaces }}
{{#each namespaces where !it.Key.startsWith('ServiceStack') }}
<b>{{it.Key}}</b>
<ul>{{#each it}}<li><a href="/json/metadata?op={{it.Name}}">{{it.Name}}</a></li>{{/each}}</ul>
{{/each}}
如果您是 #Script 的新手,我建议您通过 #Script's interactive LINQ Examples 在实践中了解它。
当然,如果这是您的偏好,您也可以使用 ServiceStack.Razor,您可以从 HostContext.Metadata 单例中访问您的 Razor .cshtml 页面。