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

问题描述 投票:0回答:1

我正在使用Mule 4和Anypoint Studio 7。

我一直在重构一个RAML文件,将Traits和ResourceTypes放在自己的文件中,以便可以从主RAML文件中引用它们。主RAML文件以红色突出显示引用,并指出外部文件中存在错误,并且不清楚错误是什么。

我注意到,当我从外部文件中移除trait:或resourceType:以及trait或resourceType的名称时,它可以正常工作。

我认为你可以添加你的traits和resourceTypes的名字,如果你也是如此,我是使用不正确的语法,或者当你移动主RAML之外的traits和resourceTypes时,例如每个特质需要自己的文件?

示例:资源类型

导致错误:

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

谢谢

mule anypoint-studio raml
1个回答
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:
© www.soinside.com 2019 - 2024. All rights reserved.