コンテンツタイプはsiteinfo
です。
このコンテンツタイプには、テキスト、エンティティ参照などの複数のフィールドがあります。
外部APIを使用して、作成されたノードの一部のフィールドを自動的に入力したいと思います。
私が使用したいAPIは次のように言っています:
APIは、一貫性のある適切に構造化されたデータをXMLおよびJSON形式で返します。返されたデータには、アプリケーションで簡単に使用できる解析済みフィールドが含まれています。これはRESTfulベースのAPIです。
そして、これはAPIの出力です:
{
"status": 1,
"api_query": "siteinfo",
"whois_record": {
"domain_name": "example.com",
"query_time": "2016-05-05 14:01:12",
"create_date": "1995-08-14",
"update_date": "2015-08-14",
"expiry_date": "2016-08-13",
"domain_registrar": {
"iana_id": 376,
"registrar_name": "RESERVED-INTERNET ASSIGNED NUMBERS AUTHORITY",
"whois_server": "whois.iana.org",
"referral_url": "http://res-dom.iana.org"
},
"name_servers": [
"a.iana-servers.net",
"b.iana-servers.net"
],
},
}
サービスの複雑な認証/要求メソッドがない場合(例 http://service.example.com/api/siteinfo/1 の単純なHTTP GET)、 の組み合わせFeeds 、 Feeds extensible parser 、& Libraries with JMESPath library インストールされている場合、ここでうまく機能します。
Feedsモジュールには、JSON JMESPathパーサーと組み合わせて使用できるHTTPフェッチャーがあり、 JMESPathクエリ を入力できます解析してノードに挿入/更新する各フィールド(たとえば、パーサー設定では、「@」(ルート)をContext& "whois_record。domain_name"(オブジェクトのプロパティをノードフィールドにマップする場合)。
このソリューションでは、フィードがインポート/更新簿記を処理している間、データを解析するための正しいクエリを理解する必要があります。このパスを使用する場合、 Feeds Import Preview モジュールを使用してインポートを実行前にテストしながら、 JMESPath構文 を学習すると非常に役立ちます。
インポートごとにURLを変える必要がある場合は、 Feedsインポートのプログラムによる呼び出し を関数に組み込み、drush eval
またはその他の任意の場所にあるインポートされたURLごとに呼び出すことができます。あなたの環境で。例えば:
//$url = Is your imported feed.
//$my_feed = Your imported feed machine name
//(i.e. the MY_FEED_MACHINE_NAME in http://example.com/import/MY_FEED_MACHINE_NAME)
function MYMODULE_import_feed($url, $my_feed) {
$feeds_source = feeds_source($my_feed);
$feeds_config = $feeds_source->getConfigFor($feeds_source->importer->fetcher);
$feeds_config['source'] = $url;
$feeds_source->setConfigFor($feeds_source->importer->fetcher, $feeds_config);
$feeds_source->save();
$feeds_source->startImport();
}
//Example execution
function MYMODULE_cron() {
$import_titles = array('title_1', 'title_2');
foreach ($import_titles as $title) {
MYMODULE_import_feed("http://service.example.com/api/siteinfo/$title",'MY_FEED_MACHINE_NAME');
}
}
フィード+ フィードJSONPathパーサー
REST with Webservices を使用すると、取得してから投稿/パッチを適用できます。また、x時間ごとに実行されるようにコードをスケジュールする方法を考え出す必要があります。 (cronジョブを作成する);対照的に、フィードには既にその機能があります。