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
Автор: Андрей Кольтяков