RAML 1.0 ciclical嵌套包括

时间:2016-04-25 03:04:44

标签: rest raml

我有这个问题,我创建了两个库来定义两种不同的类型,它们是:

Category.raml

#%RAML 1.0 Library
uses:
  - Event: !include Event.raml
  - Tournament: !include Tournament.raml

types:
#############################################################################
    base:
    usage: The base type for a category
    properties:
      min_age:
        description: The minimum age to participate in the category
        required: true
        type: number
      max_age:
        description: The maximum age to participate in the category
        required: true
        type: number
      name:
        description: The name of the category
        required: true
        type: string
      gender:
        description: The gender of the category
        required: true
        enum:
          - male
          - female
          - mix
      tournament:
        description: The tournament of the category
        required: true
        type: Tournament.base
  #############################################################################
  full:
    usage: A category with all of its events
    type: base
    properties:
      events:
        description: The events that the category contains
        required: true
        type: Event.base[]

Tournament.raml

#%RAML 1.0 Library
uses:
  - ClubInscription:  !include Club.raml
  - Category:         !include Category.raml

types:
  #############################################################################
  base:
    usage: The base type for the tournament
    properties:
      name:
        description: The name of the tournament
        required: true
        type: string
      date:
        description: Date of the tournament
        required: true
        type: string
      available_lanes:
        description: Maximum number of lanes in a serie
        required: true
        type: number
      max_swimmer_inscriptions:
        description: Maximum number of events a swimmer may be inscripted
        required: true
        type: number
      award_type:
        description: The type of awarding used in the competition
        required: true
        enum:
          - points
          - medals
          - none
      state:
        description: The current state of the tournament
        required: true
        enum:
          - closed
          - open
          - finished
  #############################################################################
  full:
    usage: A tournament with all its categories and club inscriptions
    type: base
    properties:
      club_inscriptions:
        description: The clubs inscripted in the tournament
        required: true
        type: ClubInscription.base[]
      categories:
        description: The categories the tournament has
        required: true
        type: Category.base[]

有这个,有冲突是有道理的。我非常了解RAML,所以我读到某个地方“使用”只应该在使用某些东西作为父项时使用,但是我应该怎样做才能在我的项目中的任何地方重写所有内容(因为这种情况在其中的任何地方都会发生) )。

我想过在一个文件中定义类型的基础,但它只是一个不应该在一起的信息混合,我想知道是否有“使用”的替代方法来重用在另一个文件中输入。

提前致谢。

1 个答案:

答案 0 :(得分:1)

最简单的解决方案是make:

  • TournamentBase.raml
  • TournamentFull.raml
  • CategoryBase.raml
  • CategoryFull.raml

你不会有循环依赖。