Как представить массив длинных как параметр запроса в Swagger 2.0? - PullRequest
0 голосов
/ 13 декабря 2018

Мне трудно понять, какова будет правильная спецификация Swagger 2.0 для случая, когда я ожидаю, что параметр в запросе будет списком long (C #).Это то, что я пробовал, основываясь на примерах, где параметр, передаваемый в запросе, представляет собой простые типы данных, такие как int или boolean.Но это не похоже на работу.Не похоже, что он анализируется правильно.

Мой URI выглядит примерно так: https: //.../testinstance/FeatureTexts? Api-version = 2016-09-13 & featureIds = 1629988727 & featureIds= 1924980024

И в моем тесте уровня API это не разрешается ни к чему подобному после части api-version = 2016-09-13 & featureIds =

      "get": {
        "tags": [
          "FeatureText"
        ],
        "operationId": "RenderFeatureTexts",
        "description": "The operation to get feature texts for specified features",
        "parameters": [
          {
            "name": "featureIds",
            "in": "query",
            "required": true,
            "schema": {
              "type": "array",
              "collectionFormat": "multi",
                "items": {
                  "type": "integer",
                  "format": "int64"
                }
              },
.......

Код C #, сгенерированный Swagger Codegen:

public static async System.Threading.Tasks.Task<object> ListFeatureTextsAsync(this IAgentClient operations, object featureIds, System.Threading.CancellationToken cancellationToken = default(System.Threading.CancellationToken))
{
    using (var _result = await operations.ListFeatureTextsWithHttpMessagesAsync(featureIds, null, cancellationToken).ConfigureAwait(false))
    {
        return _result.Body;
    }
}

1 Ответ

0 голосов
/ 13 декабря 2018

Измените определение параметра, как показано ниже, то есть переместите type, items и collectionFormat из schema.В OpenAPI 2.0 schema используется только для параметров тела, а другие типы параметров напрямую используют type и т. Д.

    "parameters": [
      {
        "name": "featureIds",
        "in": "query",
        "required": true,
        "type": "array",
        "collectionFormat": "multi",
        "items": {
          "type": "integer",
          "format": "int64"
        }

Вы можете легко отследить синтаксические ошибки, подобные этой, вставив свою спецификацию в Swagger Editor .

...