Swagger Swashbuckle не показывает объект ответа в swagger.json - PullRequest
0 голосов
/ 13 марта 2019

Swagger 2.0.

.netcore 2.1

фартук как на картинке.

enter image description here

У меня есть этот атрибут в конечной точке API:

[SwaggerResponse(statusCode: 200, type: typeof(List<Cat>), description: "successful operation")]

Когда я запускаю API и перехожу к https://localhost:44394/swagger/v1/swagger.json, json присутствует, но SwaggerResponse, похоже, игнорируется.

Это пример того, что я получаю:

"/api/data/cats": {
  "get": {
    "tags": [
      "CatApi"
    ],
    "operationId": "GetCatsById",
    "consumes": [],
    "produces": [],
    "parameters": [
      {
        "name": "catIds",
        "in": "query",
        "required": true,
        "type": "array",
        "items": {
          "type": "integer",
          "format": "int32"
        },
        "collectionFormat": "multi",
        "uniqueItems": false
      }
    ],
    "responses": {
      "200": {
        "description": "Success"
      }
    }
  }
},

Вы можете видеть, что в ответе просто отображается 200, и я не совсем уверен, откуда оно получает это описание - как вы можете видеть в атрибуте, оно должно быть successful operation, а мой XML-комментарий - <response code="200">successful operation</response>.

Я очень смущен. Как я могу получить Swashbuckle, используя атрибут SwaggerResponse, когда он генерирует json?

Дополнительная информация: Если я использую [ProducesResponseType(statusCode: 200, type: typeof(List<Cat>))], тогда я получаю то, что хочу:

"/api/data/cats": {
  "get": {
    "tags": [
      "CatsApi"
    ],
    "operationId": "GetCatsById",
    "consumes": [],
    "produces": [
      "text/plain",
      "application/json",
      "text/json"
    ],
    "parameters": [
      {
        "name": "catIds",
        "in": "query",
        "required": true,
        "type": "array",
        "items": {
          "type": "integer",
          "format": "int32"
        },
        "collectionFormat": "multi",
        "uniqueItems": false
      }
    ],
    "responses": {
      "200": {
        "description": "Success",
        "schema": {
          "uniqueItems": false,
          "type": "array",
          "items": {
            "$ref": "#/definitions/Cat"
          }
        }
      }
    }
  }
},

Вы можете увидеть дополнительные данные в поле produces и schema в поле responses.

Я мог бы изменить, чтобы использовать ProducesResponseType везде, но это не является стандартным полем, что касается Swagger - если я когда-нибудь заново сгенерирую код из файла swagger, мне придется всегда вносить эти изменения, чтобы я ' я хотел бы заставить его работать с SwaggerResponse.

...