包装响应对象的 RAML 特征(用于定义 REST API)

RAML Trait wrapping a response object (for defining REST API)

使用 RAML,我正在尝试创建一个信封,多个 API 可以使用它来包装响应。即,通用响应包络。

我想到了这个:

title: Response Envelop
version: 1.0

uses:
  another: ./another.raml

traits:
  responseEnvelope:
    usage: This trait should be used to wrap any response object
    body:
      application/json:
        type: object
        properties:
          metadata:
            type: another.AType
          responseObjectToWrap:
            type: any
          message:
            type: another.BType

我很难定义上面的 responseObjectToWrap 部分。这是将由响应包络包装的类型。 type: any 有效吗?

此外,如何在 API 中使用此特征?例如,如果我想使用此信封包装类型 NewType

您可以为类型“<>”使用变量:

responseEnvelope:
        usage: This trait should be used to wrap any response object
        body:
          application/json:
            type: object
            properties:
              metadata:
              responseObjectToWrap:
                type: <<typeName>>
              message:

然后在您定义资源特征时传递该类型:

/myResource:
  post:
    is: { responseEnvelope: {  typeName : MyCustomType } }

完整示例:

#%RAML 1.0
title: Response Envelop
version: 1.0

traits:
  responseEnvelope:
    usage: This trait should be used to wrap any response object
    body:
      application/json:
        type: object
        properties:
          metadata:
          responseObjectToWrap:
            type: <<typeName>>
          message:


types:
  NewType:
    properties:
      bla: 

/myResource:
  post:
    is: { responseEnvelope: {  typeName : NewType } }

已更新。最初发布到错误的问题并被mods立即删除因为是重复的