РУКОВОДСТВО ПО БАЛЕРИНЕ
Эта проблема связана с применением виртуальной учебной среды, обсуждаемой на одном теоретическом и нескольких практических занятиях. В этой задаче перед вами стоит задача создать и обновить профили учащихся, то есть пользователей определенного типа. Кроме того, учитывая профиль учащегося, мы хотели бы получать учебные материалы в виде тем. Обратите внимание, что учебные материалы для данного курса будут отличаться от профиля учащегося к другому. Например, для курса «Распределенные системы и приложения» учебные материалы для учащегося со слабым опытом в области «Программирование» сравнивали с другим профилем учащегося с более сильным опытом программирования.
Ниже приведен пример профиля учащегося:
*{
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?
- Предоставьте описание в открытом API API, которое обеспечивает связь между клиентом и службой для функций, описанных выше;
- Реализуйте соответствующий клиент и услугу.
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
который будет соответственно содержать заглушки для реализации вашей службы, реализации клиента и пользовательских типов, используемых для передачи данных.