web-dev-qa-db-ja.com

セットアップDrupal 8 REST Post Request

POST Drupal 8 Core RESTを使用してノードを作成するリクエストを送信する際に問題が発生しました。ここで私が数回実行した手順は次のとおりです。これらに注意してください。手順は実際に動作する例を作成するためのものですが、現時点ではセキュリティへの影響については心配していません。

  1. drupal 8の最新バージョンをインストールします
  2. すべてのコアWebサービスモジュール(HAL、HTTP基本認証、RESTful Webサービス、シリアル化)を有効にする
  3. 権限ページに移動します。 RESTful Webサービスの権限を見つけて、すべてのユーザーに対して削除、取得、パッチ適用、投稿を許可します。検索Node記事のアクセス許可、すべてのユーザーの作成、削除、編集を許可します。
  4. ChromeでDev HTTPクライアントを起動します。次のリクエストを入力します。

enter image description here [送信]を押した後、ノードが正常に作成された場合、200ではなく201であるはずの次のメッセージが表示されます。 RESTパーツが機能していると思いますが、ノードを作成するPOSTを取得する方法を理解できていないようです。

enter image description here

Drupal 8 RESTへのPOSTリクエストの作成に関するドキュメントが見つかりません。Drupalが正常に解析できるように、これらのリクエストを作成する方法についての洞察は非常に役立ちます。

6
Emanegux

Drupal.orgの(同一の)問題に関する解決策を投稿しました: https://www.drupal.org/node/2472451#comment-9903259 コメントに添付されているDev HTTPクライアントのスクリーンショットも参照してください。

基本的に、あなたの例にはいくつかの問題があります:

  • エンドポイントは/ entity/nodeです
  • acceptヘッダー「application/json」を追加
  • cSRFトークンを追加します(/ rest/session/tokenを介して要求できます)
1
askibinski

まだたくさんの403 Forbiddenエラーここに私の全体的な解決策を要約します(Drupal 8.0.1):

1.)セットアップと構成

すべてのコアWebサービスモジュール(HAL、HTTP基本認証、RESTful Webサービス、シリアル化)を有効にする

RESTful Webサービスの関連する権限を有効にし、関連するノードを作成します。

2.)CSRFトークンを取得します。

GET http://your-drupal8/rest/session/token

3.)POST新しいノードを作成する

POST http://your-drupal8/entity/node?_format=hal+json

POSTのURLは/entity/node のではなく /node

ヘッダー:

Authorization: Basic QWRt...
X-CSRF-Token: zCf...

データ

{
"title": [
  { "value": "atest2" }
],
"type": [
  { "target_id": "article" }
],
"_links": {
  "type": { "href": "http://your-drupal8/rest/type/node/article" }
}
}
6
sleidig

オリジナルのモジュールをフォークして、このバグとプルリクエストを修正しました。このブランチを受け入れてほしい。 https://github.com/setali/drupal_cors からダウンロードできます。

0
user3000253