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

时间:2019-02-01 16:12:44

标签: mule anypoint-studio raml

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

谢谢

1 个答案:

答案 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:
相关问题