SharePoint REST API прокси для локальной отладки в Node.js
На одном из недавних вебкастов, посвященных SharePoint Framework, проводимому Rencore (вебинар "SPFx Deep Dive") с Биллом Беером (Bill Baer) в качества ведущего докладчика, было довольно много интересных идей и рекомендаций.
Конечно, формат мероприятия не позволяет раскрыть должным образом всех нюансов и деталей и, по сути дела, основное время уходит на расскрытие обстановки проекта. Данный вебинар не стал исключением и все свелось к история платформы SharePoint, обзор инструментария разработки и демонстрации пары несложных примеров. Однако, были интересные нюансы.
Одна из "крутых фишек" SPFx это возпожность запустить режим "serve" потем задачи Gulp gulp serve
, после чего будет запущен локальный сервер с отслеживанием изменений в коде и интерфейсом для локальной отладки workbench
. Workbench позволяет в режиме эмуляции новой страницы (Modern Pages) добавлять разрабатываемые веб-части и производить разработку, сразу видя результаты.
Однако, локально запущенные workbench не может работать с данными из SharePoint, для ряда сценарием локальной разработки предлагается генерировать искуственные данные нужной структуры и использовать их для отладки. Такой подход имеет плаво на жизнь, но требует больше времени и не всегда удобен. Как по мне, то работа с живыми тестовыми данными более продуктивна, а иногда и обязательна.
Уверен, что в дальнейшем в фреймворке будет добавлен режим проксирования API SharePoint в рамказ workbench без необходимости публикации решения. В рамках текущих обстоятельств, было бы достаточно REST API.
Почему я так уверен? Да потому что, как только данная идея пришла в голову, как что-то необходимое, я сел с реализацией и за пятничный вечер удалось создать прокси для REST запросов SharePoint API на Node.js и Express, который позволяет со страницы вне домена портала отправлять локально запросы, которые перенаправляются в экземпляр SharePoint.
На такой локальной странице, без какого либо развертывания, можно выполянть GET или POST запросы, как будто бы они были выполнены на странице SharePoint, например, /_api/web/lists
вернет данные о перечне списков ~site/_api/web/lists
.
GET и POST запрсы, отправляемые на /_api/*
транслируются в SharePoint на заданный узел (SPWeb) с использованием заданной схемой авторизации, определяемыми в настройках прокси.
Конечно, подобный способ имеет ряд ограничений, в том числе и используемыми API, только REST (UPD: Недавно была добавлена экспериментальная поддержка SOAP запросов). Реализовать проксирование JSOM, например, может быть уже сложнее (но возможно).
REST в SharePoint все значительнее становится приоритетной технологией программной коммуникации с API. Этому есть все предпосылки: простота, универсальность, кроссплатформенность и независимость от языка программирования.
Созданный проект представляет из себя в большей степени концепт, он свободно доступен на GitHub'е и опубликован в NPM в виде подключаемой библиотеки.
Опубликовано: 04.09.2016
Автор: Андрей Кольтяков