Прежде всего необходимо создать приложения JHipster. Для этого необходимо его установить. Установка JHipster происходит с помощью нескольких простых команд, но для начала необходимо установить менеджер зависимостей Yarn.

Если у вас уже установлен Yarn, то просто следуйте инструкции, которая приведена ниже:

Установка JHipster на машину:

$: yarn global add generator-jhipster

После успешной установки будет доступна команда jhipster.

Создание приложениея JHipster

  1. mkdir LoginApplication && cd LoginApplication
  2. jhipster

Далее отвечайте на вопросы, которые вам будет задавать генератор JHipster приложения.

Создание приложения JHipster вопросы ответы

Если не хочется думать, то возьмите мои ответы:

Which type of application would you like to create?

Monolithic application (recommended for simple projects)

What is the base name of your application?

LoginApplication

What is your default Java package name?

com.idurdyev.jhipster.loginapplication

Do you want to use the JHipster Registry to configure, monitor and scale your application?

No

Which type of authentication would you like to use?

JWT authentication

Which type of database would you like to use?

SQL (H2, MySQL, MariaDB, PostgreSQL, Oracle, MSSQL)

PostgreSQL

Which development database would you like to use?

H2 with disk-based persistence

Do you want to use Hibernate 2nd level cache?

Yes, with ehcache (local cache, for a single node)

Would you like to use Maven or Gradle for building the backend?

Maven

Which other technologies would you like to use?

Просто Enter, ничего не выбирая

Which Framework would you like to use for the client?

Angular 4

Would you like to use the LibSass stylesheet preprocessor for your CSS?

Yes

Would you like to enable internationalization support?

N

Besides JUnit and Karma, which testing frameworks would you like to use?

Просто Enter

Would you like to install other generators from the JHipster Marketplace?

No

Запуск приложения JHipster

В директории приложения запустить серверное приложение с помощью команды:

$: ./mvnw

Проверить работоспособность приложения можно, перейдя по ссылке http://localhost:8080/. Так же необходимо проверить, что создалась тестовая база данных H2. Для этого необходимо авторизоваться в приложении JHipster. Логин и пароль: admin/admin, соответсвенно.

Если удалось авторизоваться, значит JHipster запущен и работает исправно.

JHipster стартовая страница

Знакомство с REST API JHipster

Перейдите на вкладку API, раздел меню Administration. Приложение Qt, которое описывается в этой статье будет обращаться к сервису /api/authenticate, чтобы получить JWT (JSON Web Token) токен, для дальнейшей работы с REST API приложения JHipster.

Протестируем как это работает, как показано на рисунке ниже:

Тестирование JWT авторизации JHipster

То есть я отправил JSON объект, с информацией о логине и пароле пользователя, сервер JHipster произвел проверку пользователя и вернул мне токен, так как я указал корректные данные.

{
  "password": "admin",
  "rememberMe": true,
  "username": "admin"
}

Токен

{
  "id_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJhZG1pbiIsImF1dGgiOiJST0xFX0FETUlOLFJPTEVfVVNFUiIsImV4cCI6MTUxNjkwMTIwMH0.qnAx1MySfBvryKPiWZm_L6M75CpRqptLlRQiD1eRxDYJKFK3TeS5oV6cwXxofCQZUUy-T4bLOJn35FbKwYnTwQ"
}

В случае, если указать не корректные данные, то вернется такой ответ:

{
  "AuthenticationException": "Bad credentials"
}

Так же логин пользователя не может состоять из цифр. Логин пользователя должен состоять из символов. Если же попытаться указать логин пользователя цифрами, то получим сообщение о том, что проверка данных не прошла и нам вернётся следующий JSON объект:

{
  "type": "http://www.jhipster.tech/problem/contraint-violation",
  "title": "Method argument not valid",
  "status": 400,
  "message": "error.validation",
  "fieldErrors": [
    {
      "objectName": "loginVM",
      "field": "password",
      "message": "Size"
    }
  ]
}

Разработка приложения Qt, Login Application

Я не буду акцентировать внимание на том как пользоваться Qt Designer в этой статье. Цель данной статьи рассказать как можно использовать REST API для создания клиент-серверного приложения Qt.

На рисунке ниже прикладываю простой вариант реализации формы авторизации, так же показано каким образом сделать так, чтобы в поле пароля текст был скрыт (в виде звёздочек):

Форма авторизации Qt

Реализация запроса к REST API с помощью Qt

Теперь настало время реализовать запрос к сервису авторизации и отправить JSON объект с данными на сервер JHipster, после чего получить ответ сервера и вывести результат в статус бар, внизу приложения.

Структура проекта:

  • LoginApplication.pro - файл проекта
  • main.cpp - основной файл проекта, внутри функция main
  • mainwindow.h - заголовочный файл окна входа
  • mainwindow.cpp - класс окна входа
  • mainwindow.ui - интерфейс программы

Результат

При успешной авториазации: Успешная авторизация Qt

При НЕ успешной авторизации НЕ успешная авторизация Qt

Резюме

В этой статье был подробно, на сколько у меня хватило времени и терпения, описан метод использования JHipster с библиотекой Qt. В итоге получилось приложение окна авторизации. Используя JHipster и Qt возможно очень быстро создавать клиент-серверные приложения. JHipster позволяет генерировать серверное приложение и REST API, в свою очередь Qt предоставляет обширный инструментарий для создания десктопных приложений и другие мощные инструменты.