如何隐藏 Swagger UI 中的模型部分?

问题描述 投票:0回答:7

我使用 Swagger UI 来显示 API 文档。默认情况下,它在底部显示“模型”部分:

enter image description here

如何隐藏?

swagger-ui
7个回答
29
投票

要隐藏“模型”部分,请将

defaultModelsExpandDepth: -1
添加到
index.html
中的 Swagger UI 配置代码中。

注意选项名称使用复数

Model*s*
而不是
Model

// index.html

<script>
window.onload = function() {
  // Begin Swagger UI call region
  const ui = SwaggerUIBundle({
    url: "https://petstore.swagger.io/v2/swagger.json",
    dom_id: '#swagger-ui',
    defaultModelsExpandDepth: -1,   // <-------

Swagger UI 还有许多其他控制 API 文档渲染的配置选项


22
投票

对于 .Net Core 3.0 只需添加 c.DefaultModelsExpandDepth(-1);在你的 Startup.cs 上

// Startup.cs

app.UseSwaggerUI(c =>
{
    c.DefaultModelsExpandDepth(-1); // Disable swagger schemas at bottom
    c.SwaggerEndpoint("/swagger/v1/swagger.json", "Your API V1");
});

5
投票

在 Docket bean 中添加 新

Docket(DocumentationType.SWAGGER_2).ignoredParameterTypes(YourClass.class,YourAnother.class)

希望对你有帮助


3
投票

使用 Spring Boot:

@Bean
public UiConfiguration uiConfiguration() {
    return UiConfigurationBuilder//
            .builder()//
            .defaultModelsExpandDepth(-1)//
            .build();//
}

1
投票

如果使用 Django,请将其添加到您的

settings.py
中:

SWAGGER_SETTINGS = {
    'DEFAULT_MODEL_DEPTH':-1
}

0
投票

我正在使用

swagger-ui-express
在我的网站上保留我的 API 文档,经过几次尝试后我最终得到了这个解决方案:

const docSwagger = require("./some-path/your-swagger-spec.json");
const swaggerOptions = {
    // This option is the one you're supposed to use
    defaultModelsExpandDepth: -1, 
    // Tried this one also
    defaultModelExpandDepth: -1,
    // Ended up using this option because previous ones didn't work
    customCss: '.models {display: none !important}' 
}

app.use('/your-path', swaggerUI.serve, (...args) => swaggerUI.setup(docSwagger, swaggerOptions)(...args));

在另一个网站上阅读此回复后得出最终解决方案


-2
投票

虽然不是您正在寻找的确切结果,但我发现通过以下方式禁用您不想要的模型的属性是完美的:

<?php
// src/AppBundle/Entity/User.php

use ApiPlatform\Core\Annotation\ApiResource;
use Symfony\Component\Serializer\Annotation\Groups;

...

 * @ApiResource(
 *     attributes={
 *         "normalization_context"={"groups"={"api"}},
 *         "denormalization_context"={"groups"={"api"}}
 *     },

...

 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     * @Groups({"api","user:read"})
     */
    protected $id;

    /**
     * @var \DateTime
     */
    private $disabledProperty;

这样你就可以得到一个模型,其中包含你通过小组公开的道具

api
。 希望这对某人有帮助:)

© www.soinside.com 2019 - 2024. All rights reserved.