RAML показывает ошибку при добавлении признаков или типа ресурса и имен во внешние файлы типа признака или ресурса

Я использую Mule 4 и Anypoint Studio 7.

Я реорганизовал RAML-файл, чтобы Traits и ResourceTypes были в их собственных файлах, чтобы на них можно было ссылаться из основного RAML-файла. В основном файле RAML ссылка выделяется красным цветом и указывается, что во внешнем файле есть ошибки, и неясно, что это за ошибка.

Я заметил, что когда я удаляю trait: или resourceType: из внешнего файла, а также имя для trait или resourceType, он работает правильно.

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

Пример: тип ресурса

Причины ошибки:

#%RAML 1.0 ResourceType
resourceType:
  genericData:
    description: Generic data resource
    is: [headers]
    get:
      description: Get all <<resourcePathName>>
      is: [myDataResponse] 
    post:
      description: Update <<resourcePathName>>
      body:
        application/json:
          example: examples/data.json
      is: [mySuccessResponse]

Ошибка исчезает

#%RAML 1.0 ResourceType
    description: Generic data resource
    is: [headers]
    get:
      description: Get all <<resourcePathName>>
      is: [myDataResponse] 
    post:
      description: Update <<resourcePathName>>
      body:
        application/json:
          example: examples/data.json
      is: [mySuccessResponse]

Пример: черта

Причины ошибки:

#%RAML 1.0 Trait
trait:
  messageResponse:
    responses: 
      200:
        body: 
          application/json:
            example: examples/success.json

Ошибка исчезает

#%RAML 1.0 Trait
    responses: 
      200:
        body: 
          application/json:
            example: examples/success.json

Спасибо


person user3165854    schedule 01.02.2019    source источник


Ответы (1)


Если файл начинается со строки идентификатора фрагмента RAML, а идентификатор фрагмента не является библиотекой, наложением или расширением, содержимое файла после удаления строки идентификатора фрагмента RAML ДОЛЖНО быть действительным структурно согласно соответствующей спецификации RAML.

Поэтому, если это Trait, не нужно добавлять trait:, а если это ResourceType, не нужно добавлять resourceType: в начале.

Их также нельзя назвать фрагментами. Вам нужно определить имя при импорте в ваш raml:

#%RAML 1.0
title: My API
traits:
  messageResponse: !include resourceTypes/messageResponse.raml

Однако вы можете назвать их в библиотеках. Что-то вроде:

#%RAML 1.0 Library

traits:
  messageResponse:
    responses: 
      200:
        body: 
          application/json:
            example: examples/success.json

А затем вы можете комбинировать фрагменты типов данных и библиотеки, чтобы сделать его еще лучше. Полный пример:

#%RAML 1.0 Trait
    responses: 
      200:
        body: 
          application/json:
            example: examples/success.json

mylib.raml:

#%RAML 1.0 Library

traits:
  messageResponse: !include traits/messageResponse.raml

myapi.raml:

#%RAML 1.0
title: My API

uses:
  myLib: library.raml

/resource:
  is: [ myLib.messageResponse ]
  get:
person Ryan Carter    schedule 13.02.2019