В настоящее время я использую Overlay для поддержки двух языков для моего API.У меня нет проблем с локализацией displayName, описанием и документацией для всех методов моего API, но Мне трудно обеспечить локализацию для всех типов данных .
1.Подготовьте две пары типизированных фрагментов
В настоящее время я использую типизированные фрагменты для достижения этой цели.
ru / UserProfile.raml
#%RAML 1.0 DataType
type: object
properties:
id:
type: number
description: User id
ко / UserProfile.raml
#%RAML 1.0 DataType
type: object
properties:
id:
type: number
description: 유저 아이디
ru / api.raml
#%RAML 1.0
...
types:
UserProfile: !include ./UserProfile.raml
/user:
/me:
get:
responses:
200:
body:
application/json:
type: UserProfile
ко / api.raml
#%RAML 1.0 Overlay
types:
UserProfile: !include ./UserProfile.raml
Проблема этого подхода заключается в том, что мне приходится копировать всю информацию о свойствах (тип и фасеты), а не только описание свойств, на английском и корейском языках, что противоречит принципу СУХОЙ.
2.Использование наследования типов
Другое решение, которое я придумал, это использование наследования типов, как показано ниже.Тем не менее, я не уверен, что разобранный json будет прост в использовании (используя raml js parser).
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."
},
]
}
Фасеты повторяются, и клиентысинтаксического анализатора должен обрабатывать логику слияния ..
Я не уверен, каким путем я должен идти, или если есть другой лучший путь.(