如果将此对象定义为数组选项,则Aglio构建器不会将对象置于架构中

时间:2017-05-20 03:10:18

标签: apiblueprint aglio

我在这里定义名为Page Index的对象chartControllers中的属性,该属性必须是名为chartController的对象数组。

# Page Index (Page Base)
    - bundle: `site-index` (string, required) - название страницы на фронтенде
    - nav (object, required) - навигационное меню
    - settings: `/settings` (string, required) - юрл по которому будет осуществляться переход на страницу настроек
    - signOut: `/signOut` (string, required) - юрл по которому будет отправляться POST запрос для выхода из аккаунта
    - chart (object, required) - данные для первоначальной отрисовки графика, до выбора каких либо опций
    - title (object, required)
    - text: `выберите модуль` (string, required) - надпись в заголовке графика
    - chartControllers (array[chartController], required) - массив всевозможных опций меню


# chartController
- title: `выбор инстанса` (string, required) - названии типа настройки в меню
- action: `/page` (string, required) - url по которому совершает данная настройка запрос при выборе ее опции(опций)
- name: `page` (string, required) - уникальное человекочитаемое имя настройки на английском языке
- method: `POST` (string, optional) - метод совершения запроса

aglio builder defines object Page Index correctly, with only one peculiar moment - it does not describe options for object `chartController`.

它为我提供了以下身体,这很好:

{
  "title": "главная",
  "bundle": "site-index",
  "nav": {
    "settings": "/settings",
    "signOut": "/signOut"
  },
  "chart": {
    "title": {
      "text": "выберите модуль"
    }
  },
  "chartControllers": [
    {
      "title": "выбор инстанса",
      "action": "/page",
      "name": "page",
      "method": "POST"
    }
  ]
}

BUT!它为我提供了不完整的架构!它没有描述chartController。 架构如下:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "type": "object",
  "properties": {
    "title": {
      "type": "string",
      "description": "Название страницы в табе браузера."
    },
    "bundle": {
      "type": "string",
      "description": "название страницы на фронтенде"
    },
    "nav": {
      "type": "object",
      "properties": {
        "settings": {
          "type": "string",
          "description": "юрл по которому будет осуществляться переход на страницу настроек"
        },
        "signOut": {
          "type": "string",
          "description": "юрл по которому будет отправляться POST запрос для выхода из аккаунта"
        }
      },
      "required": [
        "settings",
        "signOut"
      ],
      "description": "навигационное меню"
    },
    "chart": {
      "type": "object",
      "properties": {
        "title": {
          "type": "object",
          "properties": {
            "text": {
              "type": "string",
              "description": "надпись в заголовке графика"
            }
          },
          "required": [
            "text"
          ]
        }
      },
      "required": [
        "title"
      ],
      "description": "данные для первоначальной отрисовки графика, до выбора каких либо опций"
    },
    "chartControllers": {
      "type": "array",
      "description": "массив всевозможных опций меню"
    }
  },
  "required": [
    "title",
    "bundle",
    "nav",
    "chart",
    "chartControllers"
  ]
}

如何解决这个问题,并在架构中看到chartController

1 个答案:

答案 0 :(得分:0)

在网上搜索了很长时间后,我和你有同样的问题,最后我找到了解决方案:

Attributes with array of objects produce incomplete schema #328

以下是针对您的特定问题的修复示例: (只是添加'已修复',虽然我知道这个'已修复的来自哪里。)

# Page Index (Page Base)
......
- chartControllers (array[chartController], required, fixed) - массив всевозможных опций меню