RAML 1.0: определить minProperties внутри необязательного объекта - PullRequest
0 голосов
/ 26 октября 2018

Я хочу определить необязательный объект size. Если объект присутствует, должно быть указано хотя бы одно из указанных свойств (min или max). Я думал о чем-то вроде этого:

properties:
    someval:
        type: string
    size:
        type: object
        required: false
        additionalProperties: false
        minProperties: 1
        properties:
            min:
                required: false
                type: string
            max:
                required: false
                type: string

Но, похоже, minProperies подразумевает, что size должен быть доступен. По крайней мере, я получаю эту ошибку проверки, если я установлю только min или max:

<code><pre>TypeError: Cannot convert undefined or null to object<br> &nbsp; &nbsp;at Function.keys (&lt;anonymous&gt;)<br> &nbsp; &nbsp;at MinProperties.extractValue (C:\mypath\node_modules\raml-typesystem\dist\src\restrictions.js:1059:23)<br> &nbsp; &nbsp;at MinProperties.MinMaxRestriction.check (C:\mypath\node_modules\raml-typesystem\dist\src\restrictions.js:775:22)<br> &nbsp; &nbsp;at C:\mypath\node_modules\raml-typesystem\dist\src\typesystem.js:1564:89<br> &nbsp; &nbsp;at Array.forEach (&lt;anonymous&gt;)<br> &nbsp; &nbsp;at InheritedType.AbstractType.validateDirect (C:\mypath\node_modules\raml-typesystem\dist\src\typesystem.js:1564:37)<br> &nbsp; &nbsp;at InheritedType.AbstractType.validate (C:\mypath\node_modules\raml-typesystem\dist\src\typesystem.js:1612:34)<br> &nbsp; &nbsp;at C:\mypath\node_modules\raml-validate\raml-validate.js:308:31<br> &nbsp; &nbsp;at C:\mypath\node_modules\raml-validate\raml-validate.js:405:18<br> &nbsp; &nbsp;at Array.map (&lt;anonymous&gt;)

Как получить начальную спецификацию, не работая с постоянно установленным объектом size?

1 Ответ

0 голосов
/ 14 ноября 2018

Вы можете попытаться разделить типы размеров следующим образом:

#%RAML 1.0
baseUri: https://mocksvc.qax.mulesoft.com/mocks/9a2d6433-e5f4-47c6-9c41-8701efcc9d9b
title: test
version: 1
protocols: [HTTP]
mediaType: application/json

types: 
  MinType:
    type: object
    additionalProperties: false
    properties:
      min:
        type: string
        required: true
  MaxType:
    type: object
    additionalProperties: false
    properties:
      max:
        type: string
        required: true
  MyType:
    type: object
    properties:
      someval:
        type: string
      size:
        type: MinType | MaxType
        additionalProperties: false
        required: false

/newResource:
  displayName: resourceName
  post:
    body: 
      type: MyType
      example: {"someval": "someval", "size" :{ "max": "1"}}
...