/schedule-server-api-client

Клієнт для API зі розкладами

Primary LanguageTypeScriptMIT LicenseMIT

Клієнт для API зі розкладами

Цей клієнт дозволяє працювати із API на сервері зі розкладами.

Клієнт автозгенеровано цією Java програмою за допомогою цієї node обгортки.

Автогенерація є можливою завдяки архітектурі серверної програми, яка використовує стандарт для API, OpenAPI.

Приклад використання клієнта тут: src/example.ts

Структура

Після генерації створюється чотири TypeScript файли:

  1. Api. Цей файл містить функції та класи, які можна використовувати для надсилання запитів до сервера. Він має дві різні реалізації для різних стилів програмування: класи для ООП та функції для функц. програмування. Він також включає моделі об'єктів даних, що надсилаються до сервера або отримуються з нього.
  2. Base. Цей файл оголошує дві речі: шлях до серверної програми та базовий клас для всіх класів API. Базовий клас приймає конфігурацію, яка вказується перед використанням API.
  3. Common. У цьому файлі зберігаються невеликі утиліти, які використовуються всередині клієнта.
  4. Configuration. Цей файл визначає параметри конфігурації для клієнта. Він надає інтерфейс для вказівки ключа API, імені користувача, пароля, токену доступу, базового шляху та інших параметрів, необхідних для здійснення запитів до API.

Для того, щоб використовувати клієнт, необхідно імпортувати клас або функцію API з файлу Api, а також клас конфігурації з файлу Configuration. Для здійснення http-запитів клієнт використовує бібліотеку axios, яка працює як в середовищі браузера, так і в node середовищі.

Тести

Щоб запустити тести, необхідно заповнити .env згідно зі .env.example

Всього ендпойнтів: ~10

Покрито тестами:

  1. /api/Teacher

Середовища

Клієнт протестовано у браузері та в мобільному застосунку, написаному на React Native. React Native потребує встановлення окремої бібліотеки задля належної обробки URL об'єктів, react-native-url-polyfill.

Пакунок

Задля того, щоб клієнт встановлювався у інші проекти, його було перетворено у пакунок наступним чином:

  • Складено index файл – окремий файл, що експортує лише окремі складові клієнта, необхідні для його використання в інших проектах.
  • У package.json додано поля main та exports. Вони вказують на index файл.
  • Скомпільовано первинний код. Результат розміщено в директорії dist

Встановлюється клієнт у веб проджект цією командою:

npm install Seagullie/schedule-server-api-client

Генерація

Щоб згенерувати клієнт, було використано цю команду:

npx openapi-generator-cli generate -i path/to/swagger.json -g typescript-axios -o ./api-client-axios

Посилання

OpenApi Generator

https://github.com/OpenAPITools/openapi-generator

OpenApi

https://www.openapis.org/what-is-openapi

react-native-url-polyfill

https://github.com/charpeni/react-native-url-polyfill

Пакунки. Точки входу

https://nodejs.org/api/packages.html#package-entry-points

Поле exports у package.json

https://webpack.js.org/guides/package-exports/

Поле main у package.json

https://nodejs.org/api/packages.html#main