RAML, показывающий ошибку при добавлении признака или типа ресурса и имен во внешние файлы типа признака и восстановления - PullRequest
0 голосов
/ 01 февраля 2019

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

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

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

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

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

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

#%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

Спасибо

1 Ответ

0 голосов
/ 14 февраля 2019

Если файл начинается со строки идентификатора фрагмента 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:
...