Anu*_*ale 6 swagger-ui angular
我正在致力于从 Angular UI 项目外部自定义 Swagger 端点。我为此使用 SwaggerUIBundle。
我在互联网上进行了很多探索,但没有确切地了解如何创建我们自己的自定义布局和插件。在 swagger 官方网站上获得的文档非常没有帮助,它并不能帮助我在我的 Angular 项目中创建这些东西。
const ui = SwaggerUIBundle({
url: "https://petstore.swagger.io/v2/swagger.json",
dom_id: '#swagger-ui',
presets: [
SwaggerUIBundle.presets.apis,
SwaggerUIBundle.SwaggerUIStandalonePreset
],
Plugins: [
SwaggerUIBundle.plugins.DownloadUrl,
]
layout: "StandaloneLayout"
Run Code Online (Sandbox Code Playgroud)
})
你们能帮我举一些例子,说明如何在我的 Angular 9 代码中创建我自己的自定义组件、布局和插件吗?
谢谢。
在你的 swagger 插件组件中(或者使用 window.swagger = swaggerUIBundle),你应该引用 swagger json (即system引用你的 swaggerUIBundle 变量的地方):
let mySwaggerJson = system.getSystem().spec().toJSON()
Run Code Online (Sandbox Code Playgroud)
这给我们提供了线索,即该文档处于加载状态。这也不会给你你想要的,除非你在文档加载后调用它。
所以我们能做的就是等待 swagger json 上所需的状态(即它已加载的状态):
waitUntil = (condition: any, checkInterval = 100) => {
return new Promise((resolve) => {
let interval = setInterval(() => {
if (!condition()) {
return;
}
clearInterval(interval);
resolve(null);
}, checkInterval);
});
};
await waitUntil(() => system.specSelectors.loadingStatus() === 'success');
//This outputs the swagger as you would expect.
console.log(system.getSystem().spec().toJSON());
Run Code Online (Sandbox Code Playgroud)
我曾尝试拦截可以通过 swagger 插件实现的请求和响应,但它们没有给我我想要的东西。这做到了。
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |