RAML Trait, обертывающий объект ответа (для определения REST API) - PullRequest
0 голосов
/ 11 апреля 2019

Используя 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, используя этот конверт.

1 Ответ

1 голос
/ 11 апреля 2019

Вы можете использовать переменную для типа '<>':

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 } }

Обновлены. Первоначально отправлено на неправильный вопрос случайно и мгновенно удалено модами за дубликат

...