如何在RAML 1.0中覆盖对象数组属性类型

Arn*_*ter 10 java generics raml

我有一个通用的Java类型,如下所示:

class Response<D> {
  List<D> data;
}
Run Code Online (Sandbox Code Playgroud)

并希望创建类似于RAML 1.0(我是新手)的东西.

我的第一个方法是

types:
  Response:
    type: object
    properties:
      data: object[]
Run Code Online (Sandbox Code Playgroud)

并在使用它时

body:
  type: Response
    properties:
      data: MyDataType[]
Run Code Online (Sandbox Code Playgroud)

从API-Workbench我总是得到"从Response继承的非法覆盖属性数据".

另一个想法是使用repeat:

types:
  Response:
    type: object
    properties:
      data: object
      repeat: true
Run Code Online (Sandbox Code Playgroud)

和分别

body:
  type: Response
    properties:
      data: MyDataType
      repeat: true
Run Code Online (Sandbox Code Playgroud)

现在非法覆盖已经消失,但在API-Console中我现在得到一个"Uncaught TypeError".

怎么解决?或者我需要一种完全不同的方法?任何的想法?

isa*_*s-b 1

我看到以下选项可以解决此问题:

  1. 筛选测试用例的开源存储库,希望能够记录您的需求。我发现这个项目raml-java-parser 测试了很多测试用例,但第一次尝试时找不到解决方案。这是一个特定的测试用例资源,其中包含双尖括号(来自 raml-for-jaxrs)语法中的字符串collectionSchema ,看起来很可疑?
  2. 使用 API 生成预期输入的序列化版本(例如您的 )List<MyDataType>,并修改生成的输出。例如,使用与第 1 点相同的 raml-java-parser。
  3. 查找整个文件规范的参考,包括复杂类型。似乎thisthis可能包含有趣的信息,例如“地图/字典type{}或外部类型可能需要包含在内的事实”。也许这个答案链接在这方面有所帮助。
  4. 您问题中的 raml 标签目前只有 37 个用户关注。为了瞄准更广泛的受众,是否可以使用更通用的标签?

20 分钟前我对 RAML 一无所知,所以不要将其视为完整答案,而是一个快速猜测。