我正在使用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
谢谢
如果文件以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: