将特征或资源类型和名称添加到特征和资源类型外部文件时,RAML 显示错误

RAML showing error when adding trait or resource type and names into trait and resoucre type external files

我正在使用 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

谢谢

如果文件以 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: