№19 HTTP сервисы

Тема: Создать HTTP сервис
Время на выполнение: 60 минут

Задание
Создать HTTP сервис для получения заявок. Сохранить полученную заявку в БД

Выполнение
Создайте таблицу:

image002

Скрипт:

CREATE TABLE "LAB_APPLICATION"
   (  "APPID" NUMBER,
      "CLIENTID" NUMBER,
      "DT" DATE,
      "APPLICATION" CLOB,
      CONSTRAINT "LAB_APPLICATION_PK" PRIMARY KEY ("APPID") ENABLE
   ) ;

Создайте приложение LAB.19
image003

Связанные библиотеки:
image004

Создайте новый поток
image005

имя потока HttpApplication
image006

Добавьте в поток ноды HTTP Input и HTTP Reply
image007
Свойства узла HTTP Input
image008
image009

image010

Свойства ноды HTTP Reply оставьте без изменений

 

Добавьте в поток ноду Database
image011

Свойства ноды Database
image012

Добавьте к потоку ноду Compute и переименуйте ее в Reply
image013

Соедините ноды как указано на рисунке:
image014

Откройте ESQL модуль ноды Database и пропишите следующий код:

BROKER SCHEMA com.sharavara
DECLARE ns NAMESPACE 'http://sharavara.com';

CREATE DATABASE MODULE HttpApplication_Database
                CREATE FUNCTION Main() RETURNS BOOLEAN
                BEGIN
                               DECLARE APP BLOB;
                               SET APP = ASBITSTREAM(Body,,1208);
                               INSERT INTO Database.VS.LAB_APPLICATION (
                               APPID,
                               CLIENTID,
                               DT,
                               APPLICATION
                               )
                               VALUES (
                               CAST(Body.ns:Application.id AS DECIMAL),
                               CAST(Body.ns:Application.Client.id AS DECIMAL),
                               CURRENT_TIMESTAMP,
                               APP
                               ); 
                               RETURN TRUE;
                END;

END MODULE;

Откройте ESQL модуль ноды Reply и укажите следующий код

BROKER SCHEMA com.sharavara

CREATE COMPUTE MODULE HttpApplication_Reply
                CREATE FUNCTION Main() RETURNS BOOLEAN
                BEGIN
                               SET OutputRoot.XMLNSC.Reply.id = InputRoot.XMLNSC.ns:Application.id;
                               SET OutputRoot.XMLNSC.Reply.Status = 'Application has been saved';
                               RETURN TRUE;
                END;

END MODULE;

Запустите тест потока. Для теста используйте сообщение:

<Q1:Application id="1" xmlns:Q1="http://sharavara.com" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 xsi:schemaLocation="http://sharavara.com Application.xsd ">
<Client id="1">
   <LastName>Sharavara</LastName>
   <FirstName>Vitaliy</FirstName>
   <DOB>1981-11-13</DOB>
   <Passport>
     <Number>AA123451</Number>
     <Date>2001-10-03</Date>
   </Passport>
   <Phones>
   <Phone type="mobile">+380678334523</Phone>
   <Phone type="home">+380442732114</Phone>
   </Phones>
</Client>
<Product>1</Product>
<Sum>400000</Sum>
<Period>4</Period>
</Q1:Application>

image015

Результат теста:
image016

Сохраненная заявка:
image017

Откройте браузер Fierfox и запустите REST клиент
image018

URL сервиса: http://localhost:7080/SaveApplication

 

Попробуйте сохранить заявку с тем же id
image019

Результат работы сервиса:
image020

image021

Измените id заявки и снова выполните запрос:
image022

Сохраненные заявки:
image023