Автоматизация создания пользовательского интерфейса Swagger с помощью входного файла json - PullRequest
0 голосов
/ 07 января 2020

у меня есть пара. json файл в gitlab. Я хочу создать Swagger UI для этих json файлов. Ниже приведен мой пример json file

    "source_page_view_reference": {
        "page_type": "native",
        "page_id": "group/homepage",
        "page_uuid": "98dsdbyb",
        "view_uuid": "64vsdgj738"
    },
    "campaign_id": "73gdhgshd",
    "treatment_id": "fdsgf6378",
    "experience_cloud_id": "6avdhwy",
    "alert_title": "No internet",
    "alert_message": "No internet connection",
    "trigger_type": "500 - Internal server error",
    "trigger_message": "Service down",
    "trigger_source": "Authenication service",
    "session_info": {
        "launch_uuid": "asd6davhav",
        "activation_uuid": "6437dghad"
    },
    "analytics_sdk": {
        "component_id": "com.cxv....analytics",
        "component_version": "0.0.1"
    },
    "timestamp": "2017-11-03T00:00:05.000Z"
}

Обратите внимание, что все мои json файлы не являются настоящими API, но я хочу отобразить UG Swagger UI для тех json файл. Для этого я выполнил ручное кодирование в Swagger Hub, чтобы сгенерировать пользовательский интерфейс Swagger для одного из файлов json,

. Ниже приведен мой код, написанный вручную для создания пользовательского интерфейса Swagger. Ссылка на изображение - [1]: https://i.stack.imgur.com/HovkW.png [Swagger UI] [1]

Теперь я пытаюсь автоматизировать скрипт, который принимает файл json и генерирует Swagger UI для этого . Каков наилучший возможный подход, который я могу использовать, или есть ли какие-либо примеры сценариев для их создания.

info:
  version: '1.0.0'
  title: 'Alert View'
  description: 'Marks the time that an alert (modal) is displayed to the User in the UI.'
paths:
  /Alert view :
     post:
      description: AlertView Parameter.
      responses:
        default:
          description: successful operation
      parameters:
        - in : header
          name: Alert Title
          description: The Title of the alert
          schema:
            type: string
          required: true
          example: No internet

        - in : query
          name: Alert Message
          schema:
            type: string
          description: The message of the alert
          required: false
          example: No internet connection

        - in: query
          name : Trigger Type
          schema:
            type: string
          description: Trigger Name for the respective trigger
          required: false
          example: 500 - Internal server error

        - in: query
          name: Trigger Message
          schema:
            type: string
          description: Payload message for a trigger
          required: false
          example: Service down

        - in: query
          name: Trigger Source
          schema:
            type: string
          description: Source for a trigger, potentially an API response, or element click, etc
          required: false
          example: Authenication service
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/EventParameter'
        description:  Event parameter schema
components:
  schemas:
    pagetype:
      type: object
      example: native
      properties:
        type:
          type: string
          default: true
    pageid:
      type: object
      example: group/homepage
      properties:
        type:
          type: string
          default: true
    page_uuid:
      type: object
      example: dsvd37473874
      properties:
        type:
          type: string
          default: true
    view_uuid:
      type: object
      example: dsdad778
      properties:
        type:
          type: string
          default: true
    component_id:
      type: object
      example: com.dgs....analytics
      properties:
        type:
          type: string
          default: true
    component_version:
      type: object
      example: 0.0.1
      properties:
        type:
          type: string
          default: true

    launch_uuid:
      type: string
      example: 6d5yadfah
    activation_uuid:
      type: string
      example: xzyxvhxvtt75

    session_info:
      type: object
      properties:
        launch_uuid:
          $ref: '#/components/schemas/launch_uuid'
        activation_uuid:
          $ref: '#/components/schemas/activation_uuid'
    SourcePageViewRef:
      type: object
      properties:
        pagetype:
          $ref: '#/components/schemas/pagetype'
        pageid:
          $ref: '#/components/schemas/pageid'  
        page_uuid:
           $ref: '#/components/schemas/page_uuid'  
        view_uuid:
          $ref: '#/components/schemas/view_uuid' 

    analytics_sdk:
      type: object
      properties:
        component_id:
          $ref: '#/components/schemas/component_id'
        component_version:
          $ref: '#/components/schemas/component_version' 

    EventParameter:
      type: object
      properties:
        sourcePageViewReference:
          $ref: "#/components/schemas/SourcePageViewRef"
        campaign_id :
          type: string
          example: asfghgafs677
          description: 'Event Parameter'
        treatment_id:
          type: string
          example: vxbVSxyy
        experience_cloud_id:
          type: string
          example: 'gahgshags'
        alert_title:
          type: string
          example: No internet
        alert_message:
          type: string
          example: No internet connection
        trigger_type:
          type: string
          example: 500 - Internal server error
        trigger_message:
          type: object
          example: Service down
        trigger_source:
          type: string
          example: Authenication service
        session_info:
          $ref: '#/components/schemas/session_info'
        analytics_sdk:
          $ref: '#/components/schemas/analytics_sdk'
        additionalProperties:
          type: boolean
          default: false

# Added by API Auto Mocking Plugin
servers:
  - description: SwaggerHub API Auto Mocking
    url: https://api.swaggerhub.com/datacollector/alertView/1.0.0```



...