我正在使用Mule 4和Anypoint Studio 7。
我一直在重构RAML文件,以在其自己的文件中包含Traits和ResourceTypes,以便可以从主RAML文件中引用它们。主RAML文件以红色突出显示参考,并指出外部文件中有错误,并且不清楚错误是什么。
我注意到,当我从外部文件中删除trait:或resourceType:以及trait或resourceType的名称时,它可以正常工作。
我认为如果您也愿意的话,可以在traits和resourceTypes中添加名称,这是我使用的语法错误还是将traits和resourceTypes移至主RAML之外,然后分别将它们特质需要自己的文件吗?
示例:资源类型
导致错误:
C:\...\site-packages\sqlalchemy\sql\elements.py:4390: SAWarning:
Textual column expression 'column_name' should be explicitly declared
with text('column_name'), or use column('column_name') for more
specificity
if guess_is_literal else "column"
错误消失
for col_name in self.cols_source:
print(meta.tables[self.table_name].c[col_name].name)
print(type(meta.tables[self.table_name].c[col_name].name)) #quotedname
print(type(column(meta.tables[self.table_name].c[col_name].name))) #ColumnClause
print(type(text(meta.tables[self.table_name].c[col_name].name))) #TextClause
print(type(str(meta.tables[self.table_name].c[col_name].name))) #Str
#source_query_cols.append( Column( name=meta.tables[self.table_name].c[col_name].name, type_=meta.tables[self.table_name].c[col_name].type ))
#source_query_cols.append( Column( name=column(meta.tables[self.table_name].c[col_name].name), type_=meta.tables[self.table_name].c[col_name].type ))
#source_query_cols.append( Column( name=text(meta.tables[self.table_name].c[col_name].name), type_=meta.tables[self.table_name].c[col_name].type ))
source_query_cols.append( Column( name=str(meta.tables[self.table_name].c[col_name].name), type_=meta.tables[self.table_name].c[col_name].type ))
示例:特质
导致错误:
#%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]
谢谢
答案 0 :(得分: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: