Вы здесь

Как Drupal продолжает развиваться в направлении API-first платформы

Перевод оригинальной страницы https://www.drupal.org/blog/how-drupal-continues-to-evolve-towards-an-ap... на русский язык.

Прошло 12 месяцев с момента моего последнего отчета об изменениях в инициативе API-first Drupal. За последний год мы достигли значительного прогресса, поэтому я хотел бы предоставить еще одно обновление.

Два с половиной года назад мы запустили Drupal 8.0 со встроенным REST API. Это ознаменовало начало эволюции Drupal как платформы API-first. С тех пор в каждом из пяти новых выпусков Drupal 8 появились значительные улучшения API веб-сервисов.

Хотя я был сторонником добавления веб-сервисов к Drupal 8 пять лет назад, сегодня я еще больше уверен в правильности этого направления развития. Важные рыночные тенденции поддерживают эту стратегию, в том числе интеграцию с другими технологическими решениями, распространение новых устройств и цифровых каналов, растущее внедрение инфраструктур JavaScript и многое другое.

На самом деле, я считаю, что эта функциональность настолько важна для успеха Drupal, что в течение нескольких лет Acquia спонсировал одного или нескольких разработчиков программного обеспечения на полный рабочий день, чтобы вносить вклад в API веб-сервисов Drupal, помимо финансирования различных участников сообщества. Сегодня два разработчика Acquia работают над API-интерфейсами веб-сервисов Drupal на полный рабочий день.

API REST в базовом Drupal

В то время как Drupal 8.0 поставляется с базовым API REST, сообщество прилагает все усилия, чтобы улучшить свои возможности, надежность и охват тестированием. Drupal 8.5 выпушен 5 месяцев назад и включает значительные улучшения и новые функции API REST. Drupal 8.6 будет выпущен в сентябре с новой пакетом улучшений.

Одним из усовершенствований Drupal 8.6 является перенос кода API-first в отдельные модули, без использования модуля REST. Это может показаться не значительным изменением, но это так. В долгосрочной перспективе все модули Drupal должны поставляться с API-интерфейсами веб-сервисов, а не в зависиеть от центрального модуля API для предоставления своих API-интерфейсов, что сейчас заставляет их учитывать влияние на клиенты REST API при внесении изменений.

Еще одно улучшение, которое мы внесли в REST API в Drupal 8.6, - это поддержка загрузки файлов. Если вы хотите понять, сколько мыслей и забот поместили в поддержку REST для загрузки файлов, посмотрите сообщение блога Wim Leers: API-first Drupal: загрузка файлов. Тяжелая работа над безопасностью загрузки файлов, поддержкой больших файлов, оптимизацией производительности и хорошим опытом разработчиков.

JSON API

Включение модуля API JSON в ядро ​​важно, поскольку JSON API все чаще встречается в сообществе JavaScript.

Первоначально мы планировали добавить JSON API к Drupal 8.3, но этого не произошло. Когда этот план был первоначально задуман, мы обнаружили, что подсистемы Routing, Entity, Field и Typed Data Drupal были недостаточно подготовлены к для API-first. До конца 2017 года необходимо было подготовить и укрепить эти основополагающие подсистемы.

Те же недостатки, которые препятствовали развитию REST API, также проявились в JSON API, GraphQL и других API-модулях. Внесение изменений в них, а не добавление обходных решений требует времени. Тем не менее, этот подход позволит создать более простую экосистему, основанную на API и более быстрый прогресс!

Несмотря на задержку, команда JSON API добилась невероятных успехов. Всего за последние шесть месяцев они выпустили 15 версий своего модуля. Они добились улучшений с высокими темпами, включая всестороннее тестирование, лучшее соответствие спецификациям JSON API и многочисленные улучшения стабильности.

Сообщество Drupal стремится к этим улучшениям, а использование модуля API JSON выросло на 50% в первой половине 2018 года. Тот факт, что использование модуля увеличилось, а общее количество открытых проблем снизилось, является доказательством того, что Модуль JSON API стал стабильным.

Друпал сообщество будучи взволнованным, как и я, быстрыми темпами развития и готовности модуля JSON API, мы решили не добавлять JSON API в качестве экспериментального модуля для Drupal 8.6. Вместо этого мы планируем перенести его на ядро ​​Drupal в начале цикла разработки Drupal 8.7 и включить его как стабильный в Drupal 8.7.

GraphQL

В течение более двух лет я выступал за то, чтобы мы рассматрели возможность добавления GraphQL в ядро ​​Drupal.

Хотя основные коммиттеры и основные участники еще не сделали GraphQL еще одним приоритетом, был достигнут большой прогресс в модуле GraphQL, который приближается к его первой стабильной версии. Несмотря на отсутствие стабильного релиза, его внедрение за первые шесть месяцев 2018 года увеличилось на 200% (хотя его использование по-прежнему измеряется на сотнях сайтов, а не на тысячах).

Я также рад, что наконец-то вышла новая версия спецификация GraphQL, которая больше не обременена проблемами лицензирования. Это отличная новость для сообщества Open Source и использования GraphQL.

Я пока не знаю, поддерживают ли создатели модуля GraphQL мою рекомендацию по добавлению GraphQL в ядро. Мы намеренно отложили эти разговоры, пока не стабилизировали API REST и не добавили поддержку JSON модуля. Мне хотелось бы чтобы модуль GraphQL был добавлен в будущую версию Drupal 8. Независимо от того, что мы решим, GraphQL является важным компонентом для API-первого Drupal, и я очень рад его развитию.

OAuth 2.0

Обновление API веб-служб не будет полным, без аутентификации. В прошлом году я объяснил, как модуль OAuth 2.0 станет еще одним логическим дополнением к ядру Drupal.

С тех пор модуль OAuth 2.0 был пересмотрен, чтобы исключить его собственную реализацию OAuth 2.0 и вместо этого использовать сервер OAuth 2.0 на PHP. Эта реализация широко используется с более чем 5 миллионами инсталляций. Вместо того, чтобы иметь отдельную реализацию, специфичную для Drupal, которую мы должны поддерживать, мы можем использовать стандартную реализацию де-факто, поддерживаемую другими.

API-first экосистема

Хотя я лично больше всего сосредоточился на REST API и JSON API, а GraphQL занимает второе место, также приятно видеть, что разрабатываются многие другие API-модули:

OpenAPI, для документации по API на основе стандартов, теперь в бета-версии 1
JSON API Extras, для формирования JSON API для конкретных потребностей вашего сайта (изменения полей, удаление полей и т. д.)
JSON-RPC, для помощи в выполнении общих действий администратора сайта Drupal, например, для очистки кеша
... и многое другое

Вывод

Надеюсь, вы так же в восторге от предстоящего выпуска Drupal 8.6, как и я, и всех улучшений веб-сервисов, которые он принесет. Я очень благодарен всем участниках разработки за вклад, который они сделали для Drupal API, и за невероятный импульс, достигнутый этими проектами и инициативами.

Особая благодарность Wim Leers (Acquia) и Gabe Sullice (Acquia) за вклад в это сообщение в блоге и Mark Winberry (Acquia) и Jeff Beeman (Acquia) за отзывы в процессе написания.