DevGang
Авторизоваться

MunchPay Node API — применение семантического управления версиями

Вспоминаем SemVer и нашу связанную с данной темой статью. Тему мы предоставили в двух статьях:

  1. Мудрый выбор разработчика
  2. MunchPay Node API — применение семантического управления версиями

Быстрый пересмотр семантической версии. Он состоит из 3 разделов.

MAJOR.MINOR.PATCH

MAJOR: Он представляет собой основную версию приложения. Любое несовместимое изменение, модификация API или подобные изменения обрабатываются под этим номером.

MINOR: При добавлении новой функциональности в продукт вводится обратная совместимость. Любое улучшение (например, производительность, оптимизация и т.д.) может быть описано в этом разделе.

PATCH: Как следует из названия, он предназначен для исправления ошибок внутри системы/продукта. Обратите внимание, что эти исправления ошибок должны быть обратно совместимы.

Создание MunchPay API

Давайте создадим базовый платежный API под названием MunchPay. Этот API будет иметь всего 2 маршрута: 1) Получить способы оплаты 2) Произвести платеж. Для начала нам нужно иметь Node App, которое может служить сервером API. Для этого блога я использовал Express JS. Это контрольно-пропускные пункты, которые должны быть готовы двигаться вперед.

  • Создайте проект узла
  • Установите следующие пакеты npm: express, nodemon
  • Написать шаблон для экспресс-сервера
  • Создайте 1 GET маршрут: getPaymentMethods
  • Создать 1 POST маршрут: makePayment
  • Обновите скрипты в package.json, чтобы запустить сервер

Вы можете клонировать этот репозиторий MunchPay API Get Started для выравнивания до этого шага.

Развертывание версии разработчика на общедоступном

Для развертывания MunchPay API мы будем использовать Vercel. Можно найти подробное руководство о том, как развернуть приложение Express JS на Vercel.

Чтобы сократить объем этой статьи, мы не рассматриваем здесь каждый шаг.

Как только API будет развернут, вы сможете увидеть что-то вроде этого. (Если вы не хотите развертывать, запуск его на локальном сервере также будет работать)

Выпуск первой версии

Давайте сделаем этот API общедоступным и выпустим первую стабильную версию.

Чтобы объявить общедоступный API, нам необходимо поддерживать надлежащую документацию о том, что изменяется в каждом выпуске.

Создать README.md файл в корне проекта. Это будет служить документацией нашего MunchPay API. (Фактические API используют другие инструменты, такие как Swagger/OpenAPI и т.д. для ведения документации)

Проекты узлов дают нам хорошую возможность управлять версиями нашего проекта.

Перейдите в корневой каталог проекта в терминале. И выполните эту команду :

yarn version

Это покажет вам текущую версию и предложит установить новую версию. Введите новую версию как 1.0.0. Поскольку мы выпускаем его впервые, это будет базовая версия для нашего общедоступного API.

Вы заметите, что команда yarn version также зафиксирует изменения версии.

Планирование выпуска нового PATCH

PATCH означает любые внутренние исправления ошибок с обратной совместимостью. Это означает, что это изменение не должно нарушать работу приложения конечных пользователей.

Вы можете видеть src/controllers/payment.js файл. В этом случае мы искусственно создали ошибку. Мы используем значение суммы из тела запроса для конвертации валюты. Но проверка не выполняется, если сумма не передана в теле. Это потенциальная ошибка.

Давайте исправим это. Замените эту функцию следующей функцией. [controllers/payment.js]

// POST /makePayment
router.post('/make-payment', (req, res) => {
    const { amount, mode } = req.body

    if (!amount) {
        return res.status(400).json({
            message: 'Amount is required',
        })
    }

    const convertedAmount = convertINRToUSD(amount)
    res.json({
        message: 'Payment Successfull ✅',
        amount: convertedAmount,
        currency: 'USD',
        mode,
    })
})

Для PATCH процесс может быть чем-то похожим на этот. Исправить ошибку → Увеличить версию патча → Обновить документацию (в нашем случае README) → Развернуть изменения

Выглядит следующим образом

yarn version

Введите версию как: 1.0.1. Нажмите enter, чтобы обновить версию.

Изменить README.md соответственно.

Как только версия будет обновлена, вы можете выполнить пинг базового API, чтобы проверить последнюю версию API. localhost:8080

Развертывание нового выпуска MINOR

MINOR означает любое внутреннее улучшение с обратной совместимостью. Таким образом, это изменение не должно нарушать работу приложения пользователя.

Вы можете выполнить любое такое изменение в нашем API. В настоящее время все доступные способы оплаты являются статическими. Вы можете вызвать другой API для выбора способов оплаты в соответствии с регионом пользователя.

Как только эти изменения будут внесены, дальнейший процесс будет таким же, как и при развертывании PATCH версии: Изменить код → Увеличить младшую версию → Обновить документацию (в нашем случае README) → Развернуть изменения.

Публикация релиза MAJOR

MAJOR означает революционное изменение, которое затронет конечных пользователей.

Вы можете запланировать любое такое несовместимое обновление в нашем API. Предположим, вы изменили название маршрута makePayment API или изменили метод getPaymentMethods с GET на POST (или любое такое изменение).

Как только эти изменения будут внесены, дальнейший процесс будет таким же, как и при развертывании PATCH версии: Изменить код → Увеличить основную версию → Обновить документацию (в нашем случае README) → Развернуть изменения

ПРИМЕЧАНИЕ: Когда мы увеличиваем major версию, значения minor и patch должны быть равны 0. Итак, теперь версия вашего API будет 2.0.0.

Ключевые рекомендации

Мы рассмотрели, как планировать patch, minor и major релизы на основе платежного API MunchPay.

Увеличение версии и отражение изменений в документации должны выполняться в обязательном порядке для любого нового выпуска (patch, minor или major).

Развертывание нашего Node API и выпуск его для публичного использования.

Тему мы разбили на две части:

  1. Мудрый выбор разработчика
  2. MunchPay Node API — применение семантического управления версиями
#Начинающим #Express #Интересное
Комментарии
Чтобы оставить комментарий, необходимо авторизоваться

Присоединяйся в тусовку

В этом месте могла бы быть ваша реклама

Разместить рекламу