Книга: Технологии интеграции "1С:Предприятия 8.3""
Назад: Получить список сотрудников
Дальше: Удалить данные о конкретном сотруднике
Получить данные о конкретном сотруднике

В этом примере, чтобы получить данные о конкретном сотруднике, нам понадобится воспользоваться другим шаблоном URL нашего HTTP-сервиса. В относительном URL запроса при обращении к сервису должно быть указано некое уникальное свойство (например, Код), по которому сотрудника можно было бы идентифицировать в справочнике. В обработчике, связанном с этим шаблоном, данные о конкретном сотруднике должны быть записаны в строку JSON и подставлены в тело ответа, возвращаемого сервисом.

Итак, добавим у нашего HTTP-сервиса объект Шаблон URL Сотрудник с шаблоном /code/{Код}. Затем у этого объекта добавим подчиненный метод GET, в качестве HTTP-метода оставим предложенное по умолчанию значение GET. Далее создадим обработчик этого метода.

В модуле нашего HTTP-сервиса будет создан шаблон функции-обработчика СотрудникGET(). Заполним эту функцию следующим образом (листинг 1.63).

Листинг 1.63. Функция «СотрудникGET»

Функция СотрудникGET(Запрос)

 

// Сформировать ответ, возвращаемый HTTP-сервисом.

Ответ = Новый HTTPСервисОтвет(200);

 

// Получить из запроса параметр URL Код.

Код = Запрос.ПараметрыURL.Получить("Код");

Если Код = Неопределено Тогда

Ответ = Новый HTTPСервисОтвет(400);

Ответ.УстановитьТелоИзСтроки("Не задан параметр Код");

Ответ.Заголовки.Вставить("Content-type", "application/json");

Возврат Ответ;

КонецЕсли;

 

// Найти сотрудника в справочнике по полученному параметру Код.

СотрудникСсылка = Справочники.Сотрудники.НайтиПоКоду(Код);

Если СотрудникСсылка = Справочники.Сотрудники.ПустаяСсылка() Тогда

Ответ = Новый HTTPСервисОтвет(404);

Ответ.УстановитьТелоИзСтроки("Сотрудник не найден");

Ответ.Заголовки.Вставить("Content-type", "application/json");

Возврат Ответ;

КонецЕсли;

 

Сотрудник = СотрудникСсылка.ПолучитьОбъект();

 

// Сериализовать данные объекта Сотрудник с помощью объекта записи (Запись).

ПараметрыЗаписиJSON = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Авто, Символы.Таб);

Запись = Новый ЗаписьJSON;

Запись.УстановитьСтроку(ПараметрыЗаписиJSON);

СериализаторXDTO.ЗаписатьJSON(Запись, Сотрудник);

 

// Записать результат записи в строку JSON.

Результат = Запись.Закрыть();

 

// Установить тело ответа из строки Результат.

Ответ.УстановитьТелоИзСтроки(Результат);

Ответ.Заголовки.Вставить("Content-type", "application/json");

 

Возврат Ответ;

 

КонецФункции

Прокомментируем код функции.

Родительский объект функции-обработчика – шаблон URL Сотрудник, описанный с помощью шаблона /code/{Код}. Этот шаблон содержит непараметризованный сегмент code и параметризованный сегмент {Код}. Это означает, что любые символы, которые могут присутствовать в URL запроса к сервису после символов «/code/», будут трактоваться как параметр URL Код, который можно получить из переданного в функцию параметра Запрос.

Поэтому сначала в обработчике мы получаем значение параметра Код (Запрос.ПараметрыURL.Получить("Код")) и анализируем его. Если этот параметр URL не определен, то мы прекращаем работу функции и возвращаем ответ сервиса с кодом состояния 400, сообщающим об ошибке запроса.

Затем находим сотрудника в справочнике Сотрудники по значению параметра Код. Если сотрудник не найден, то мы прекращаем работу функции и возвращаем ответ сервиса с кодом состояния 404, сообщающим об этом.

От ссылки на найденного сотрудника мы получаем объект и сериализуем данные сотрудника в JSON с помощью метода ЗаписатьJSON() объекта глобального контекста СериализаторXDTO. Результат записи сохраняем в строку JSON в переменную Результат. После этого с помощью метода УстановитьТелоИзСтроки() устанавливаем тело ответа HTTP-сервиса из строки Результат и возвращаем ответ сервиса в переменной Ответ.

Теперь посмотрим, как это работает. Наберем в адресной строке браузера следующий URL (листинг 1.64).

Листинг 1.64. URL запроса

http://localhost/REST/hs/employees/code/000000001

В URL запроса к HTTP-сервису после символов «/code/» присутствует строковый код сотрудника (000000001). Поэтому такой URL будет сопоставлен с шаблоном URL Сотрудник (строка шаблона – /code/{Код}) и будет вызван обработчик этого шаблона СотрудникGET(). В результате в окне браузера мы увидим содержимое ответа сервиса (листинг 1.65).

Листинг 1.65. Содержимое ответа сервиса

{

"#value": {

"Ref": "9575f8ed-369f-11e9-8bb2-642737df2048",

"DeletionMark": false,

"Code": "000000001",

"Description": "Алексеев Сергей Иванович",

"ДатаРождения": "1980-12-10T00:00:00",

"КоличествоДетей": 1,

"Работает": true,

"Стаж": "10.05.01",

"Должность": "88d54406-36a1-11e9-8bb2-642737df2048"

}

}

Назад: Получить список сотрудников
Дальше: Удалить данные о конкретном сотруднике