正确创建 RAML 1.0 命名示例

Properly create a RAML 1.0 Named Example

我正在使用 RAML 1.0 指定 API,但在使用命名示例片段类型时遇到问题。我查看了大量教程和示例,但找不到有关此资源预期内容的权威指南。

我正在使用 MuleSoft Anypoint Platform API Designer。 (2020 年 5 月)

这是我的数据类型定义:

#%RAML 1.0 DataType
type: object
properties:
  display-name: 
    required: true
    type: string
  note-properties:
    required: true
    type: object
  note-data:
    required: true
    type: any

这是我的命名示例片段:

#%RAML 1.0 NamedExample
noteExample:
    display-name: greeting
    note-properties: read-only
    note-data: Hello world

这里是引用这些文件的根文件:

#%RAML 1.0
title: sandbox API

types:
  noteType: !include definitions/noteType.raml

/note:
  get:
    responses:
      200:
        body:
          application/json:
            type: noteType
            examples: !include examples/noteExample.raml

问题是解析器(APIKit 插件)将此报告为错误。这是来自设计中心的错误消息:

['note-properties'] should be object at /examples/noteExample.raml (3, 1)

我也试过更简单的 DataType 定义,但我得到了同样的错误。

我的命名示例文件中是否存在明显错误。我知道必须有一个明确的规范,但到目前为止我发现的是各种(偶尔相互矛盾的)例子。

...好吧,这很尴尬。错误消息准确说明了问题所在。

它清楚地写着“XXX 应该是一个对象”

当我将命名示例更改为:

#%RAML 1.0 NamedExample
noteExample:
  type: object
  properties:
    status: read-only
    note-data: Hello world

...

的值

note-properties

是一个实际的对象而不是一个简单的字符串(就像在我的 OP 中那样),那么它工作得很好。