RAML-зависимые обязательные параметры запроса

Имею следующую черту характера:

traits:
  feedSortable:
    queryParameters:
      sortBy:
        description:  Sort the topic feed
        required:     false
        default:      'created_at'
        type:         string
        enum:         [ 'most_recent', 'upvotes' ]

      since:
        description:  Get topics since utc creation date. Required in case of upvotes
        required:     false
        type:         datetime-only

      until:
        description:  Get topics until utc creation date
        required:     false
        type:         datetime-only

Параметры запроса Since и until требуются только в том случае, если sortBy определен как upvotes.
Как сделать это лучше всего в моем определении RAML?

В более общем плане я хочу знать, как я определяю определения параметров запроса в зависимости от других параметров запроса. Не может быть такой редкости?


person html_programmer    schedule 15.09.2020    source источник
comment
Вы пробовали использовать queryString вместо queryParameter? Наряду с типами Union должна быть возможность получить спецификацию. Вот документация: github.com/raml-org/raml-spec/blob/master/versions/raml-10/   -  person George    schedule 29.09.2020


Ответы (1)


Не похоже, что есть хороший способ, хотя это, казалось бы, относительно распространенный случай. Swagger кажется слишком ограничительным, RAML, похоже, тоже не хватает параметров.

Я обошел проблему, сделав поле совершенно необязательным и добавив дополнительное описание к значению по умолчанию:

  since:
    description:  Get topics since utc creation date
    required:     false
    default:      sortBy = recent -> null, sortBy = upvotes -> now() - 1 month
    type:         datetime-only
person html_programmer    schedule 19.09.2020