Bluemix: Управление API - ошибка Swagger jsonReference. Это не поддерживается. Как мне это исправить?

Я пробовал импортировать документ swagger в формате json. Я получил ошибку

В полях paths ["/ namespaces"]. Get.responses ["401"] используется Swagger jsonReference. Это не поддерживается. Удалите это поле или вместо этого вставьте указанный JSON и повторно отправьте запрос.

(Я также приложил скриншот на всякий случай). Фрагмент кода, который мог вызвать ошибку, выглядит следующим образом:

"401": {
    "$ref": "#/responses/UnauthorizedRequest"
},
"500": {
    "$ref": "#/responses/ServerError"
}

Что не так с этим содержимым? Буду признателен, если вы укажете мне, как решить проблему.

Спасибо !

Ссылка: снимок экрана  введите описание изображения здесь


person ibmamnt    schedule 25.02.2016    source источник


Ответы (1)


Эта ошибка выглядит как ограничение / ошибка, но, как следует из описания ошибки, вы можете встроить определение, чтобы обойти ее. Вот пример встраивания ссылок в документ Swagger.

В следующем документе Swagger есть $ref

"responses": {
    "200": {
        "description": "Task retrieved",
        "schema": {
            "$ref": "#/definitions/Task"
        }
    },
    "404": {
        "description": "Task not found"
    }
}

...

"definitions": {
    "Task": {
        "type": "object",
        "required": [
            "deadline",
            "description",
            "status"
        ],
        "properties": {
            "description": {
                "type": "string",
                "example": "Make an app for Demo"
            },
            "status": {
                "type": "string",
                "example": "Created"
            },
            "deadline": {
                "type": "string",
                "format": "date",
                "example": "01/15/16"
            }
        }
    }

После встраивания определения $ref документ Swagger будет выглядеть так:

"responses": {
    "200": {
        "description": "Task retrieved",
        "schema": {
          "type": "object",
          "required": [
              "deadline",
              "description",
              "status"
          ],
          "properties": {
              "description": {
                  "type": "string",
                  "example": "Make an app for Demo"
              },
              "status": {
                  "type": "string",
                  "example": "Created"
              },
              "deadline": {
                  "type": "string",
                  "format": "date",
                  "example": "01/15/16"
              }
          }
        }
    },
    "404": {
        "description": "Task not found"
    }
}
person Navid Shakibapour    schedule 25.02.2016
comment
Спасибо. Я попробую это. - person ibmamnt; 29.02.2016
comment
Я бы рассматривал полный импорт спецификации, совместимой с OpenAPI, нормальной функцией. Я знаю, что это можно рассматривать как удобную функцию, но ручная оптимизация спецификации swagger только с целью импорта в платформу API Mgmt может быть неприемлемой в определенных сценариях клиентов. Файл спецификации OpenAPI должен быть универсально допустимым для всех распространенных сценариев использования API, таких как, например, документация, создание заглушки клиента, создание заглушки сервера и, конечно, управление API. Я открою RFE для этой функции. - person MHeiss; 05.04.2016