覆盖数据类型类型的片段

时间:2018-12-07 09:48:19

标签: raml

我目前正在使用Overlay为我的API支持两种语言。我可以为我的API的所有方法本地化displayName,描述和文档没有问题,但是我很难为所有数据类型提供本地化

1。准备两对打字片段

当前,我正在使用类型化的片段来实现这一目标。

zh-CN / UserProfile.raml

#%RAML 1.0 DataType
type: object
properties:
  id:
    type: number
    description: User id

ko / UserProfile.raml

#%RAML 1.0 DataType
type: object
properties:
  id:
    type: number
    description: 유저 아이디

zh-CN / api.raml

#%RAML 1.0
...
types:
    UserProfile: !include ./UserProfile.raml
/user:
  /me:
    get:
      responses:
        200:
          body:
            application/json:
              type: UserProfile

ko / api.raml

#%RAML 1.0 Overlay
  types:
    UserProfile: !include ./UserProfile.raml

这种方法的问题是我必须用英语和韩语复制所有属性信息(类型和构面),而不仅仅是属性描述,这违反了DRY原则。

2。使用类型继承

我想到的另一个解决方案是使用类型继承,如下所示。但是,我不确定解析后的json是否易于使用(使用raml js解析器)。

ko / UserProfile.raml

#%RAML 1.0 DataType
type: !include ../en/UserProfile.raml
properties:
  id:
    description: 유저 아이디

以下是raml js解析器生成的数据。

{
  "name": "UserProfile",
  "type": [
    {
      "name": "type",
      "type": "object,
      "properties": [
        {
          "name": "id",
          "type": "number,
          "required": true,
          "description": "App user id",
        },
    }
  ],
  "properties": [
    {
      "name": "id",
      "type": "number,
      "required": true,
      "description": "사용자 정보에 해당하는 유저 id."
    },
  ]
}

Facet被重复,并且解析器的客户端应处理合并逻辑。

我不确定应该走哪条路,或者还有其他更好的方法。 :(

0 个答案:

没有答案