SwaggerUIBundle скрыть схемы - PullRequest
       36

SwaggerUIBundle скрыть схемы

6 голосов
/ 04 марта 2020

Я работаю над swagger-ui, использующим файл чванства json, например:

...
...
...
host: example.com
basePath: /
schemes:
- https
swagger: "2.0"
...
...
...

Есть ли способ не показывать schemes в Интернете через swagger-ui.

Я просмотрел документацию для конфигурации , но не смог найти ничего, что мог бы использовать. Возможно, я что-то упускаю.

Дайте мне знать, если у вас есть какие-либо идеи.

Мой JS фрагмент кода:

// above code for swagger-ui stuff
// snippet is just about conf
jQuery(document).ready(function () {
    const swaggerUI = SwaggerUIBundle({
        url: jQuery("#swagger-ui").data("source"),
        dom_id: "#swagger-ui",
        deepLinking: true,
        presets: [
        SwaggerUIBundle.presets.apis
        ],
        plugins: [
        ],
        layout: "BaseLayout",
        defaultModelsExpandDepth: -1,
    });
    window.swaggerUI = swaggerUI;
});

Что я хочу скрыть:

enter image description here

Ответы [ 2 ]

3 голосов
/ 12 марта 2020

По моему мнению, правильный способ сделать это в версиях ниже 3.7 - создать собственный плагин, который удаляет компонент схем.

const HideSchemes = function() {
    return {
      components: {
        schemes: function() { return null }
      }
    }
  }
const swaggerUI = SwaggerUIBundle({
    ...
    plugins: [HideSchemes],
    ...
});

jQuery(document).ready(function() {
  const HideSchemes = function() {
    return {
      components: {
        schemes: function() {
          return null
        }
      }
    }
  }
  const swaggerUI = SwaggerUIBundle({
    url: 'https://petstore.swagger.io/v2/swagger.json',
    dom_id: "#swagger-ui",
    deepLinking: true,
    presets: [
      SwaggerUIBundle.presets.apis
    ],
    plugins: [HideSchemes],
    layout: "BaseLayout",
    defaultModelsExpandDepth: -1,
  });
  window.swaggerUI = swaggerUI;
});
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.24.2/swagger-ui.css" integrity="sha256-Dw3/dQaA/3PKkN2b3agvmpPhItQwRBufnIRmCYo2vo0=" crossorigin="anonymous" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.js" integrity="sha256-WpOohJOqMqqyKL9FccASB9O0KwACQJpFTUBLTYOVvVU=" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/swagger-ui/3.24.2/swagger-ui-bundle.js" integrity="sha256-vSnFNvuQhNviHFS0M3EXj1LHCYdscvEdVmLIiDDZVhQ=" crossorigin="anonymous"></script>

<div id="swagger-ui"></div>

В этом fiddlen вы можете удалить опцию плагинов, чтобы увидеть разницу.

https://jsfiddle.net/g60qsdty/

0 голосов
/ 11 марта 2020

Если вы всегда собираетесь использовать схему аутентификации http для swagger, вы можете выполнить следующие действия с вашим файлом swagger json. По умолчанию схема аутентификации будет http .

enter image description here

Теперь, если вам нужна схема аутентификации https , вы должны отредактировать swagger-ui в соответствии с предложением "webron" здесь .

Метод 1:

Добавить пользовательский css к сгенерированному чванству html здесь

Метод 2: (Не рекомендуется)

  1. Сохранить вашу схему только https
  2. Go в этом месте node_modules> swagger-ui-dist> swagger- ui. css
  3. Найти .scheme-container

  4. И добавить CSS с Дисплей: нет;

    .scheme-container {display: none; поле: 0 0 20px; отступы: 30px 0; фон: #fff; box-shadow: 0 1px 2px 0 rgba (0,0,0, .15)}

...