Я использую RAML 0.8, и я пытаюсь использовать / понять особенности
У меня есть дизайн api, и я вижу, что несколько полей повторяются в теле сообщения для каждого вызова api. и мое прочтение спецификации raml заключается в том, что, поскольку они повторяемы, они должны быть кандидатом на признак
/kmi/for/{product}:
uriParameters:
product:
description: |
The product that want to be informed about
required: true
repeat: false
type: string
example: beans
post:
description: |
Used to submit a keep me informed request
body:
application/x-www-form-urlencoded:
formParameters:
title:
description: ...
type: string
required: false
repeat: false
example: Mr
firstname:
description: ...
type: string
required: true
repeat: false
example: John
lastname:
description: ...
type: string
required: true
repeat: false
example: Connor
emailAddress:
description: ...
type: string
required: true
repeat: false
example: [email protected]
Теперь я хочу извлечь поля формы, заголовок, имя, фамилию, адрес электронной почты в типаж.
Сначала я попробовал следующее
traits:
- minimumFormFields:
title:
description: ...
type: string
....
firstname:
description: ...
type: string
....
lastname:
description: ...
type: string
....
emailAddress:
description: ...
type: string
....
и добавлен в трейт (лишние поля удалены для простоты)
/kmi/for/{product}:
post:
description: |
...
body:
application/x-www-form-urlencoded:
formParameters:
is: [minimumFormFields]
Однако это давало мне ошибки:
RAML 0.8 не позволяет использовать свойство title внутри трейтов.
Я попытался обновить черту, чтобы включить больше из исходного определения, но ничего из того, что я сделал, похоже, не работает.
traits:
- minimumFormFields:
application/x-www-form-urlencoded:
formParameters:
title:
description: ...
type: string
....
firstname:
description: ...
type: string
....
lastname:
description: ...
type: string
....
emailAddress:
description: ...
type: string
....
Но это дает мне следующую ошибку
[ошибка] Неизвестный узел: 'application / x-www-form-urlencoded'
Если я затем включу тело в трейт, я получу следующую ошибку
[ошибка] Неизвестный узел: '' [ошибка] Неизвестный признак: 'minimumFormFields'.
Как я могу извлечь поля, которые отправляются как часть тела сообщения в трейт?
Наша компания стандартизировала RAML 0.8, поэтому я не могу перейти на RAML 1.
** * ОБНОВЛЕНИЕ 1 * **
Просматривая комментарии Петру Гардеа, я создал тип ресурса
resourceTypes:
minimumFormFields:
post?:
body:
application/x-www-form-urlencoded:
formParameters:
title:
description: ...
type: string
required: true
repeat: false
Но я все еще получаю ошибки
[ошибка] Узел: 'minimumFormFields' должен быть заключен в последовательность [ошибка] Неизвестный узел: 'minimumFormFields'
Изменение на -minimumFormFields:
[ошибка] Узел: '-minimumFormFields' должен быть заключен в последовательность [ошибка] Неизвестный узел: '-minimumFormFields'
Переход на - minimumFormFields:
[ошибка] Неизвестный узел: ''
Я использую mulesoft.com для редактирования своего RAML