我正在尝试为提供自定义逻辑
opsFilter
.
我的应用程序是
Microsoft.NET.Sdk.Web
瞄准
net7.0
.
app.UseSwaggerUI(o =>
{
o.SwaggerEndpoint("v1/swagger.json", "MyApplication");
o.EnableTryItOutByDefault();
o.DocExpansion(Swashbuckle.AspNetCore.SwaggerUI.DocExpansion.None);
o.EnableDeepLinking();
o.EnableFilter();
// custom filter as the default from EnableFilter() only filters on tags and is case sensitive
o.InjectJavascript("/js/custom-swagger-ui-filter.js");
});
我开始为我的自定义js(来自
this issue
)
const CaseInsensitiveFilterPlugin = function (system) {
return {
fn: {
opsFilter: (taggedOps, phrase) => {
console.log("hello " + phrase)
return taggedOps.filter((tagObj, tag) => tag.toLowerCase().indexOf(phrase.toLowerCase()) !== -1);
}
}
}
};
document.addEventListener("load", function () {
console.log("loading custom filter!")
window.SwaggerUIBundle({
plugins: [
CaseInsensitiveFilterPlugin
],
});
});
生成此html(截断以关注问题)
</head>
...
<script src='/js/custom-swagger-ui-filter.js' type='text/javascript'></script>
...
</head>
<body>
<div id="swagger-ui"></div>
...
<script src="./swagger-ui-bundle.js"></script>
<script src="./swagger-ui-standalone-preset.js"></script>
...
</body>
插件函数不会被调用,所以在我搜索时仍然应用默认的过滤器。当我检查时,我看不到我的插件
window.SwaggerUiBundle.plugins
对象
除了试图覆盖整个index.html以确保我的脚本在
swagger-ui-bundle.js
,你知道如何做到这一点吗?
谢谢大家!
-
在加载所有索引页后,尝试在浏览器控制台中手动设置筛选器,只是为了验证概念,但它仍然没有被覆盖