Когда я импортирую Swagger API в Postman, все имена запросов в графическом интерфейсе Postman останутся пустыми - PullRequest
0 голосов
/ 04 ноября 2018

Я инженер по контролю качества. Команда разработчиков создает документацию для RESTful API нашего продукта с использованием Swagger. Мне нужно импортировать это в Postman, чтобы было проще вызывать API продукта.

После импорта файла JSON (в формате Swagger) в Postman возникает 1, но большая проблема: Все заголовки (и описания) отдельных запросов не заполнены! (см. снимок экрана ниже).

enter image description here

По-видимому, это известная проблема, задокументированная здесь: https://github.com/postmanlabs/postman-app-support/issues/1434

У нас есть буквально сотни запросов. Мне нужно найти достаточно эффективный, но простой способ обеспечить заполнение всех заголовков запросов в Postman значением, которое я хотел бы вычислить на лету.

Я рассматривал следующий подход:

Написать инструмент командной строки (используя NodeJS или другой твердая платформа), которая получит: 1. ID коллекции для исправления 2. ключ API

Он будет перебирать все запросы в коллекция. Для каждого запроса: если поле Имя пусто, затем подстрока URL запроса будет назначено в поле Имя; если имя не пусто, запрос оставлен в покое.

В чем я не уверен:

  1. Можно ли сделать это программно из Почтальона? Нет смысла помещать этот код в какой-либо отдельный запрос (как до, так и после).

(Если мне нужно кодировать эту утилиту за пределами Почтальона)

  1. Для NodeJS есть «почтальон-коллекция» и "почтальон-SDK", но я немного запутался, который я следует использовать.

  2. К сожалению, я пока не нашел подходящей> библиотеки для поддержки коллекций Postman с использованием C #> или Java.

Я откровенно смущен доступными опциями. Любое руководство будет оценено.

Ответы [ 2 ]

0 голосов
/ 07 августа 2019

У меня была такая же проблема, я решил ее благодаря решению Ian T Price (просто скопируйте значение operationId в новый ключ summary). Я решил написать для этого небольшую утилиту javascript:

function swagPostman(swaggerJson) {
  for (let path in swaggerJson.paths) {
    let methods = ["get", "head", "post", "put", "delete", "connect", "options", "trace", "patch"];

    methods.map(method => {
      if ((swaggerJson.paths[path] || {})[method]) {
        swaggerJson.paths[path][method].summary =
          swaggerJson.paths[path][method].operationId;
      }
    });
  }

  return JSON.stringify(swaggerJson);
}

Также сделал простое перо, где можно запускать скрипт с графическим интерфейсом: https://codepen.io/0x616c65/full/pMaQpb. Вы просто копируете и вставляете файл swagger.json в это перо и вуаля!

0 голосов
/ 06 мая 2019

Простой ответ на это - добавить строку summary: <RequestName>

Я сталкивался с этой проблемой, используя превосходное API-гуру OpenAPIDirectory репо

В этих файлах swagger.yaml есть строка operationId:, которую можно дублировать, а ключ заменить на summary:, используя:

awk '{if (!/      operationId:/) {print ; next} ; { print; a=gensub(/      operationId:/, "      summary:",1) ; print a}}' swagger.yaml  > swagger-new.yaml

При импорте этого в Postman отображается правильное имя запроса.

PostMan разделяет функции импорта / экспорта для разделения плагинов, но их модель плагинов оставляет желаемым лот в текущий момент времени.

...