Skip to content

NikiTuz18/axio-load-proj

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

axio-load-proj

Техническое задание:

Необходимо разработать сервис по преобразованию JSON в XML шаблонизируемым путем. Сам сервис должен состоять из двух приложений, которые будут взаимодействовать друг с другом:

REST-приложение, обладает следующим функционалом:

  1. POST метод принимающий JSON объект
  2. Сохранения данных в БД в виде модели
  3. Преобразование полученной модели в xml и отправка по SOAP
  4. Взаимодействие с SOAP-приложением
    • Полученный ответ преобразовать в модель и сохранить в бд

Стек технологий REST-приложения:

  • Spring boot
  • Hibernate
  • PostgreSQL
  • Apache HttpClient
  • Swagger
  • org.json

SOAP-приложение, обладает следующим функционалом:

  1. SOAP метод принимающий данные в CDATA
  2. Парсинг XML в объект модели
  3. Преобразование структуры XML при помощи XSLT

Стек технологий SOAP-приложения:

  • Spring boot
  • Spring WS
  • XSLT
  • W3C

Общее описание как должен работать сервис:
Начальной точкой является REST-приложение, в него подается JSON (пример далее по тексту), который сохраняется в БД, далее преобразует JSON в XML и отправляет данные в SOAP-приложение. Далее SOAP-приложение преобразует XML с помощью XSLT (именно в XSLT необходимо преобразовывать данные) и возвращается обратно в ответ. После получения данных REST-приложением в БД сохраняется ответ и возвращается пользователю. Методы обоих приложений синхронные.

Подробности реализации:
Взаимодействие между REST и SOAP приложением осущевтсвляется через генерацию классов(моделей и клиента для запроса) из wsdl, которая сгенерирована в SOAP сервисе(генерация производится через wsimport или иные утилиты).

Передача и прием данных Rest сервисом осущевствляется через модели(котнроллер или клиент(для запроса в soap сервис) принимает сразу модель, а не строку).
SOAP сервис может принимать как модель так и строку, возврат данных в виде строки.

В сервисах применить логирование и обработку исключений.
Сервисы реализуются в виде отдельных модулей проекта.
Создание проекта в личном git репозитории.

Пример входного JSON REST-приложения:

{
"name": "Тест",
"surname": "Тестов",
"patronymic": "Тестович",
"birthDate": "1990-01-01",
"gender": "MAN", -- enum (MAN, WOMAN)
"document": {
    "series": "1333",
    "number": "112233",
    "type": "PASSPORT", -- enum (PASSPORT, INTERNATIONAL_PASSPORT, DRIVER)
    "issueDate": "2020-01-01" -- Дата выдачи документа
    },
}

Входные данные SOAP-приложения(содержимое CDATA):

<person>
    <name>Тест</name>
    <surname>Тестов</surname>
    <patronymic>Тестович</patronymic>
    <birthDate>1990-01-01</birthDate>
    <gender>MAN</gender>
    <document>
        <series>1333</series>
        <number>112233</number>
        <type>PASSPORT</type>
        <issueDate>2020-01-01</issueDate>
    </document>
</person>

Что ожидается на выходе:

<person name="Тест" surname="Тестов" patronymic="Тестович" birthDate="01.01.1990" gender="MAN">
    <document series="1333" number="112233" type="PASSPORT" issueDate="01.01.2020"/>
</person>

Схема БД PostgreSQL:

image

Как развернуть и запустить:

Сделай форк репозитория, скачай его. Перед тем, как запускать использовать приложение и вносить в него изменения, соверши следующие шаги:

  1. Выполни чистую компиляцию (или установку) SOAP-модуля:
$ mvn clean compile -pl soap
  1. Запусти SOAP-модуль
  2. Выполни чистую компиляцию (или установку) REST-модуля:
$ mvn clean compile -pl rest
  1. Запусти REST-модуль

Результаты POST-запросов к приложению (uses Postman):

image image image

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published