РУКОВОДСТВО ПО БАЛЕРИНЕ

Эта проблема связана с применением виртуальной учебной среды, обсуждаемой на одном теоретическом и нескольких практических занятиях. В этой задаче перед вами стоит задача создать и обновить профили учащихся, то есть пользователей определенного типа. Кроме того, учитывая профиль учащегося, мы хотели бы получать учебные материалы в виде тем. Обратите внимание, что учебные материалы для данного курса будут отличаться от профиля учащегося к другому. Например, для курса «Распределенные системы и приложения» учебные материалы для учащегося со слабым опытом в области «Программирование» сравнивали с другим профилем учащегося с более сильным опытом программирования.

Ниже приведен пример профиля учащегося:

      *{
username: "",
last-named: "",
first-name: "",
preferred-formats:["audio", "video", "text"],
past subjects: [
{
course: "Algorithms",
score: "B+"
},
{
course: "Programming I",
score: "A+"
}
]
}


    Learning materials are represented as in the example below:
   

 {
    course: "Distributed Systems Applications",
    learning objects: {
    required: {
    audio: [{
    name: "Topic 1",
    description: "",
    difficulty: ""
    }],
    text: [{}]
    },
    suggested: {
    video: [],
    audio: []
    }
    }*
    }

Как мне сделать следующее в коде Visual Studio?

  1. Предоставьте описание в открытом API API, которое обеспечивает связь между клиентом и службой для функций, описанных выше;
  2. Реализуйте соответствующий клиент и услугу.

1 ответ

Шаг 1:

Вы можете использовать OpenAPI для создания спецификации (файла .yaml) для API, которые вам необходимо реализовать (создать профиль, отредактировать профиль, получить учебные материалы). Это то, что подразумевается под «описанием с использованием OpenAPI».

      openapi: 3.0.0
info:
  title: Tutorial API
  description: Your description goes here
  version: 0.1.0
servers:
  - url: http://api.example.com/v1
paths:
  /learners:
    post:
      summary: Create a learner profile
      requestBody:
        description: A JSON object of the learner profile
        required: true
        content:
          application/json:
              schema:
                $ref: "#/components/schemas/LearnerProfileSchema"
      responses:
        '204':
          description: Created successfully.
        '400':
          description: Bad request. Incomplete user data            
  /learners/{username}:
    patch:
      summary: Update learner profile
      parameters:
        - in: path
          name: username
          description: The username of the learner
          required: true
          schema:
            type: string
      requestBody:
        description: A JSON object of the learner profile
        required: true
        content:
          application/json:
              schema:
                $ref: "#/components/schemas/LearnerProfileSchema"
      responses:
        '200':
          description: OK
        '400':
          description: Bad request. Invalid username
  /learners/{username}/material:
    get:
      summary: Get learning material for a given learner profile
      parameters:
        - in: path
          name: username
          description: The username of the learner
          required: true
          schema:
            type: string
      responses:
        '200':
          description: List of learning material
          content:
            application/json:
                schema:
                  type: array
                  items:
                    $ref: "#/components/schemas/LearningMaterialSchema"
        '400':
          description: Bad request. Invalid username
components:
  schemas:
    LearnerProfileSchema:
      type: object
      properties:
        username:
          type: string
        last-name:
          type: string
        first-name:
          type: string
        preferred-formats: 
          type: array
          items:
            type: string
            enum:
              - audio
              - video
              - text
        past-subjects:
          type: array
          items:
            type: object
            properties:
              course:
                type: string
              score:
                type: string
    LearningMaterialSchema:
      type: object
      properties:
        course:
          type: string
        learning-objects:
          type: object
          properties:
            required:
              type: object
              properties:
                audio:
                  type: array
                  items:
                    type: object
                    properties:
                      name:
                        type: string
                      description:
                        type: string
                      difficulty:
                        type: string
                text:
                  type: array
                  items:
                    type: object
            suggested:
              type: object
              properties:
                video:
                  type: array
                  items:
                    type: object
                audio:
                  type: array
                  items:
                    type: object

Вы можете узнать о спецификации OpenAPI из документации.Если вам что-то неясно в приведенной выше спецификации, попробуйте найти это там. Это очень полезный ресурс, и его нетрудно понять.

Шаг 2:

Теперь, чтобы реализовать клиент и службу, вы можете легко сгенерировать для этого заглушки с помощью инструмента Ballerina OpenAPI cli.Предположим, вы сохранили свою спецификацию API (с шага 1) как tutorial.yaml, вам необходимо выполнить следующую команду в своем терминале:

      bal openapi -i tutorial.yaml

Примечание 1: у вас должна быть установлена ​​балерина, в противном случае вам необходимо загрузить и установить балерина (отсюда ). Примечание 2: я предполагаю, что вы запускаете это из того же каталога, где находится файл yaml, в противном случае вам нужно указать правильный путь к файлу.

Эта команда сгенерирует для вас 3 файла, service.bal, client.bal, types.bal который будет соответственно содержать заглушки для реализации вашей службы, реализации клиента и пользовательских типов, используемых для передачи данных.

Другие вопросы по тегам