Наложение фрагментов с типом данных - PullRequest
0 голосов
/ 07 декабря 2018

В настоящее время я использую 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."
    },
  ]
}

Фасеты повторяются, и клиентысинтаксического анализатора должен обрабатывать логику слияния ..

Я не уверен, каким путем я должен идти, или если есть другой лучший путь.(

...