我目前正在使用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被重复,并且解析器的客户端应处理合并逻辑。
我不确定应该走哪条路,或者还有其他更好的方法。 :(