MuleSoft将带有RAML片段的RAML规范导入Anypoint Studio

时间:2018-06-28 15:05:38

标签: raml

我们已经升级到Crowd Release平台,现在正在创建API规范,这些规范使用了MuleSoft建议的片段。但是,我们可以导入RAML,但不能生成流。没有错误-没有警告-没有。

我提供了一个例子。

api.raml

#%RAML 1.0
version: v1
title: api
types:
  contactDetails: !include library/types/contactDetails.raml

/contact:
  post:
    body: 
      application/json:
        type: contactDetails

types-library.raml

#%RAML 1.0 Library

types:
  telephoneNumber: !include ../exchange_modules/fragment-flows-problem-fragment/1.0.0/telephone-number.raml

contactDetails.raml

#%RAML 1.0 DataType
uses:
  contactDetails: ../types-library.raml

properties:
  name:
    type: string
  telephone:
    type: contactDetails.telephoneNumber

telephone-numbers.raml(片段)

#%RAML 1.0 DataType

description: |
  **includes validation applicable to a contact telephone number**
  ***
  - Minimum length 9
  - Maximum length 15

type: string
displayName: Telephone Number
minLength: 9
maxLength: 15
pattern: ^[\d ]+$
examples:
  telephoneNumber1: "01433000000"
  telephoneNumber2: "01433 000000"

我只添加RAML在Design Center和Exchange中均有效。

只需添加一下,如果我们在contactDetails.raml中删除了uses语句,则不会识别contactDetails数据类型。

如果有人在这里指出问题或解释Anypoint Studio如何导入使用非常有用的片段的规范。

谢谢。

1 个答案:

答案 0 :(得分:0)

这是一个较晚的答复,但今天我碰巧遇到了这个问题,我的搜索使我想到了您的问题。

对我来说,问题是contactDetails.raml文件中缺少!include。我在Anypoint Studio中遇到了同样的问题,而我的解决方法是:

#%RAML 1.0 DataType
uses:
  contactDetails: !include ../types-library.raml

properties:
  name:
    type: string
  telephone:
    type: contactDetails.telephoneNumber

不幸的是,Anypoint Studio并未提供任何关于为何出现RAML错误的良好信息,而只是告诉您出了什么问题。