Help us understand the problem. What is going on with this article?

Drupal8 カスタムREST API ~ POST編 ~

More than 1 year has passed since last update.

Drupal8 カスタムREST API ~ POST編 ~

by t__k
1 / 2

Drupal8でカスタムのREST APIの作成方法を説明します。

まず、RESTful Web ServicesREST UI の2つのモジュールを利用して、
GUIよりREST APIを定義できるようにインストールします。
詳しくは以下のサイトを参考してください。
https://drupal.studio-umi.jp/blog/drupal8-restui

1.モジュールの設定

新しいディレクトリを作成し、そのモジュールの情報ファイルを追加します。
/modules/custom/sample_rest_api

例:sample_rest_api.info.yml

sample_rest_api.info.yml
name: Sample Rest API
description: sample rest api taxonomy.
package: Custom
type: module
core: 8.x
dependencies:
  - rest

2. リソースプラグインの作成

RESTモジュールでプラグインを実装するために新しいディレクトリを作成し、
ファイルを追加します。
sample_rest_api/src/Plugin/rest/resource/

新しいファイル:SampleResource.php

SampleResource.php
<?php

namespace Drupal\sample_rest_api\Plugin\rest\resource;

use Drupal\rest\Plugin\ResourceBase;
use Drupal\rest\ResourceResponse;

/**
 * Provides a Sample Resource
 *
 * @RestResource(
 *   id = "sample_resource",
 *   label = @Translation("Sample resource"),
 *   uri_paths = {
 *     "canonical" = "/api/sample_resource",
 *     "https://www.drupal.org/link-relations/create" = "/api/sample_resource"
 *   }
 * )
 */
class SampleResource extends ResourceBase
{
   /**
    * Responds to POST requests.
    */
    public function post() {
        return new ResourceResponse("REST State POST!");
    }

}

3.RESTリソースの設定

RESTリソースを設定していくために、新しくディレクトリを作成し、
設定ファイルを追加します。
sample_rest_api/config/install/

新しいファイル:rest.resource.sample_rest_api.yml

rest.resource.sample_rest_api.yml
id: sample_rest_api
plugin_id: sample_rest_api
granularity: method
configuration:
  POST:
    supported_formats:
      - hal_json
      - json
    supported_auth:
      - basic_auth
      - cookie

REST API用のモジュール作成が完了したら、モジュールをインストールして、
RESTリソースと権限の設定を行います。

~ APIを叩く ~

Chrome拡張機能のDHC - REST/HTTP API Client を使って検証していきます。
ヘッダー情報の設定を以下のようにします。
Content-Typeapplication/hal+json
X-CSRF-Token:XXXXXCSRFトークン

APIを叩くと以下のように結果が返ってきます。
METHOD:POST
URL:/api/sample_resource

{
 'REST State POST!'
}

【CSRFトークン】
注意点として、リソースの登録・更新・削除を行う際にリクエストにX-CSRF-TokenヘッダーにCSRFトークンを付与する必要があります。
CSRFトークンは/rest/session/tokenにリクエストを送信することで取得できます。

t__k
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away