Задание 4: сопоставление HTTP-запросов c параметрами ответов
В этом задании с помощью REST Resource URI Editor необходимо связать параметры REST-запросов c входными параметрами ABL, а параметры REST-ответов c выходными параметрами ABL для каждой связанной ABL-операции.
Для ресурса /Customers создайте правило сопоставления для операции ReadAll класса Customer.cls с методом GET:
- Выделите /Customer из списка ресурсов и метод GET из списка Verb Association.
В секции Mapping Definitions во вкладке Input вы увидите два блока – первый содержит параметры HTTP-запроса, а второй содержит параметры интерфейса. Обратите внимание, что параметры URI и num находятся в списке Interface Parameters. Редактор REST Resource URI получил имена этих параметров из связанной ABL-операции ReadALL:method public void ReadAll(input URI as character, input num as integer, output TABLE ttAllCustomers):
- Щёлкните по Complete URL в секции URL Parameters и удерживая мышь перетащите строку на интерфейсный параметр URI.
Правило сопоставление будет отображено в виде соединяющей линии.
- Щёлкните по Query String Parameters в секции URL Parameters и перетащите строку на интерфейсный параметр num.
Появится диалоговое окно Connection participants, где num будет указан в качестве значения по умолчанию для Query String Parameter.
Нажмите кнопку OK для продолжения. Ваше правило сопоставления должно теперь выглядеть так:
Теперь для создания правила сопоставления для исходящих параметров щёлкните по вкладке Output. Обратите внимание, что интерфейсные параметры теперь находятся слева, а параметры HTTP-ответов справа. Под интерфейсными параметрами находится параметр ttAllCustomers – это выходной параметр ABL-операции ReadAll:
method public void ReadAll(input URI as character, input num as integer, output TABLE ttAllCustomers):
- Щёлкните по параметру ttAllCustomers и перетащите его на параметр Body в блоке HTTP-ответов.
Правило сопоставления будет создано и представлено в виде соединяющей линии. - Сохраните изменения (CTRL+S).
Для ресурса /Customers создайте правило сопоставления для операции Create, которая связана с методом POST в списке Verb Association:
- Выберите /Customer из списка ресурсов.
- Выберите метод POST. Убедитесь в том, что блок Interface Parameters содержит параметр custRecord, имя которого редактор получил из связанной ABL-операции процедуры CreateCustomer.p:
define input-output parameter TABLE for custRecord.
- Щёлкните по custRecord в блоке Interface Parameters и перетащите строку на Body в Request
- Перейдите во вкладку Output.
- Щёлкните по параметру custRecord из Interface Parameters и перетащите строку на Body в Response.
- Сохраните изменения (CTRL+S).
Для ресурса /Customers/{custId} создайте правило сопоставления для операции Read1, которая связана с методом GET в списке Verb Association:
- Выберите ресурс /Customers/{custId}.
- Выберите GET из списка Verb Association.
Убедитесь, что параметр custId из списка Request связан с параметром custId из списка Interface Parameters.method public integer Read1(input custId as integer, output TABLE custRecord, output httpReason as character):
Связывание должно было произойти автоматически – поэтому просто проверьте.
- Перейдите во вкладку Output.
В списке интерфейсных параметров вы должны увидеть параметры retVal, custRecord и httpReason. Это выходные параметры ABL-операции Read1. - Щёлкните по custRecord и перетащите строку на Body из HTTP Response.
Для ресурса /Customers/{custId} создайте правило сопоставления для операции Update1, которая связана с методом PUT:
- Во вкладке Input:
- Свяжите параметр Path Parameters из HTTP Request с интерфейсным параметром custId (уже должен быть связан).
- Свяжите Body из HTTP Request с интерфейсным параметром custRecord.
- Во вкладке Output свяжите интерфейсный параметр custRecord с параметром Body из HTTP Responce.
Для ресурса /Customers/{custId} создайте правило сопоставления для операции Delete1, которая связана с методом DELETE:
- Выберите ресурс /Customers/{custId}.
- Выберите метод DELETE. Убедитесь в том, что во вкладке Input интерфейсный параметр custId связан с параметром custId из Request.
- Во вкладке Output o щёлкните по интерфейсному параметру retVal и перетащите его на параметр Body из Response.
Для ресурса /Customers/{custId}/Orders создайте правило сопоставления для операции ReadAll, которая связана с методом GET в списке Verb Association:
- Выберите ресурс /Customers/{custId}/Orders.
- Выберите метод GET. Во вкладке Input, в списке интерфейсных параметров, убедитесь в том, что параметр custId уже связан с параметром пути custId, как было определено в REST-ресурсе.
- Перейдите во вкладку Output. Щёлкните по интерфейсному параметру CustomerOrders и перетащите его на параметр Body из HTTP Response. Это гарантирует, что информация о заказе клиента, полученная операцией, будет отправлена в виде выходных данных в теле ответного сообщения HTTP.
Для ресурса /Customers/{custId}/Orders/{orderNum} создайте правило сопоставления для операции Read1, которая связана с методом GET:
- Выберите ресурс /Customers/{custId}/Orders/{orderNum}.
- Выберите метод GET. Во вкладке Input, в списке интерфейсных параметров, убедитесь в том, что параметры custId и OrderNum уже связаны с параметрами пути custId и OrderNum как определено в REST-ресурсе.
- Перейдите во вкладку Output. Щёлкните по интерфейсному параметру CustomerOrders и перетащите его на параметр Body в HTTP Response. Это гарантирует, что информация о заказе клиента, полученная операцией, будет отправлена в виде выходных данных в теле ответного сообщения HTTP.
Вы завершили создание REST-сервиса CustomerOrderAppService. Сохраните изменения.