Подія, що виникає, якщо до WEB-сервера MyChat приходить POST або GET запит за http/https (REST).

 

Адреса, на яку слід надсилати запит:

[protocol]://[server_address]:[port]/rest/[scriptname]/?[parameters]

 

Опис параметрів запиту

Параметр

Значення

protocol

http або https;

server_address

IP адреса чи доменне ім'я сервера MyChat;

port

порт, на якому працює WEB-сервер MyChat. Якщо це 80/http или 443/https — можна не вказувати;

scriptname

назва скрипта в розділі подій OnRequestByREST, який буде виконуватись на цей запит. Регістр назви має значення, "myScript" та "myscript" — це різні скрипти. Скрипт має бути увімкнений!

parameters

параметри заппиту. Наприклад, data=test&key=value#testhash

 

Шаблон події
function OnRequestByREST(sBody, sParams, sHeaders, sURL, sIPv4, sIPv6: string; iType: integer): string;
begin
  // your own code
  result := '{}';
end;
begin
end.


Замість коментаря може бути будь-який ваш код.

 

Опис параметрів скриптової події

Параметр

Тип

Значення

sBody

string

текст запиту;

sParams

string

параметри запиту;

sHeaders

string

html-заголовки запиту;

sURL

string

повний URL запиту;

sIPv4

string

IP адреса клієнта в форматі IPv4;

sIPv6

string

IP адреса клієнта в форматі IPv6;

iType

integer

тип запиту. 0 — GET, 1 — POST.

 

Значення, що повертається

Функція обов'язково має повертати JSON об'єкт у вигляді текстового рядка. Якщо ви не повернете нічого або повернете неправильний об'єкт, система автоматично поверне об'єкт JSON з числовим параметром "Error".

 

Список можливих помилок, які може повернути обробник події.

 

Ця відповідь надається сервісу, який зробив POST або GET запит до WEB сервера MyChat.
 

Приклад
const
  LOG_FILE = 'c:\temp\log.txt';
  
function OnRequestByREST(sBody, sParams, sHeaders, sURL, sIPv4, sIPv6: string; iType: integer): string;
begin
    case iType of
      0: Protocol('GET request', LOG_FILE, true);
      1: Protocol('POST request', LOG_FILE, true);
    end;
  Protocol('sIPv4    : ' + sIPv4, LOG_FILE, true);
  Protocol('sIPv6    : ' + sIPv6, LOG_FILE, true);
  Protocol('sBody    : ' + sBody, LOG_FILE, true);
  Protocol('sParams  : ' + sParams, LOG_FILE, true);
  Protocol('sURL     : ' + sURL, LOG_FILE, true);
  Protocol('sHeaders : ' + sHeaders, LOG_FILE, true);
  result := '{"done" : "ok"}';
end;
begin
end.


Скрипт обробляє вхідний запит REST з браузера клієнта і зберігає дані у файл. Відповідь віддає шаблонну текстову відповідь у форматі JSON.

 

Приклад рядка запиту у браузері: http://192.168.10.109:8080/rest/telegram/?data=test&key=value#testhash

 

В нашому прикладі WEB-сервер MyChat працює на IP 192.168.10.109, порт 8080, без шифрування трафіка (http). Скрипт для запиту називається "telegram":
 

ПРиклад події на сервері MyChat

 

Результат роботи скрипту

[31.05.2017 18:12:26] GET request

[31.05.2017 18:12:26] sIPv4    : 192.168.10.105

[31.05.2017 18:12:26] sIPv6    : ::ffff:192.168.10.105

[31.05.2017 18:12:26] sBody    : ?data=test&key=value

[31.05.2017 18:12:26] sParams  : ?data=test&key=value

[31.05.2017 18:12:26] sURL     : /rest/telegram/123456:ABC-DEF1234ghIkl-zyx57W2v1u123ew11/

[31.05.2017 18:12:26] sHeaders : Host

192.168.10.109:8080

Connection

keep-alive

Cache-Control

max-age=0

Upgrade-Insecure-Requests

1

User-Agent

Mozilla/5.0 (Windows NT 6.2; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36

Accept

text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8

DNT

1

Accept-Encoding

gzip, deflate, sdch

Accept-Language

ru,en-US;q=0.8,en;q=0.6,uk;q=0.4

Cookie

io=X7qdbz1grVCXbK2TAAAA

Дивитися ще

Робота с JSON в скриптах

Protocol