hoppinger / rest_normalizations

扩展REST资源的Drupal模块

1.9.2 2022-10-29 09:17 UTC

README

Rest Normalizations模块用于扩展Drupal 8的默认REST API规范化。它添加了在无头架构中有用的属性,并有助于在实体中嵌入子实体。

安装

composer require hoppinger/rest_normalizations

版本兼容性

版本1.4.0及以上仅与Drupal 8.7.0及以上版本兼容,且旧版本不兼容Drupal 8.7.0及以上版本。

用法

Rest Normalization模块通过修改REST API,帮助嵌入内容中引用的实体。

例如,REST输出中的实体引用字段提供了目标_id、目标_type和URI。在某些情况下,我们需要有关引用实体的更多数据,而不仅仅是提供的数据。Rest Normalization通过覆盖默认值并将实体数据嵌入到响应中,帮助解决这个问题。

在模块目录/src中创建一个.php文件,内容如下。将<target_identifier>替换为需要嵌入API响应的项目特定实体引用字段(例如:node-story_overview-field_featured_story

<target_identifiers>可以是实体引用字段、段落、文件、图片、视频、媒体、分类引用字段。

文件名必须与模块名称类似,即,ModuleNameServiceProvider.php,并且必须放置在src文件夹中。

namespace Drupal\module_name;

use Drupal\Core\DependencyInjection\ContainerBuilder;
use Drupal\Core\DependencyInjection\ServiceProviderBase;
use Symfony\Component\DependencyInjection\Reference;

class ModuleNameServiceProvider extends ServiceProviderBase {
  public function alter(ContainerBuilder $container) {
    if ($container->hasParameter('rest_normalizations.target_identifiers')) {
      $target_identifiers = $container->getParameter('rest_normalizations.target_identifiers');
      
      $target_identifiers[] = <target_identifier>; #e.g., node-story_overview-field_featured_story
  
      $container->setParameter('rest_normalizations.target_identifiers', $target_identifiers);
  }
}

默认情况下,媒体、文件和段落已作为目标标识符添加。