できる人はみなくて良いです(むしろもっと良い方法あったら教えてください)
GROWI APIを使って一瞬で大量のページを作ってみよう
- ユーザーとユーザーグループ大量作成したい
- アタッチメント全部削除したい
なども同様の方法で可能
サーバーへの api リクエストについて (GROWI勉強会用)
- api リクエストを投げられるツール
- web ブラウザ (URL)
- request モジュール (node)
- postman (REST API ツール)
- Advanced REST client (Chrome 拡張機能)
- XMLHttpRequest (javascript)
- axios (javascript)
- curl コマンド
- など
GROWI サーバーに API リクエストを投げよう
準備するもの
- アクセストークン
- http://localhost:3000/me external_link の api 設定で取得できる
- これがあれば POST の場合の csrf トークンは不要
- apiリクエストに必要な情報
- https://docs.growi.org/en/api/rest-v3.html external_link
- (swagger 意識しよう to me)
- path
- body
- 上記に挙げた api 投げるためのライブラリ or ソフトウェアの中で繰り返し処理の方法を知っているもの(今回はnodeでのやり方を紹介)
node の request モジュールを使ってみる
とりあえずhello world
hello.jsconsole.log('hello world');
$ node hello.js > hello world
request を使ったapiリクエスト作成
create_page.jsconst request = require('request'); const URL = 'http://localhost:3000/_api/pages.create'; request.post( { uri: URL, headers: { 'Content-type': 'application/json' }, json: { access_token: '', body: 'hoge', path: `/hoge/fuga`, }, }, (err, res, data) => { console.log(data); }, );
繰り返し処理
create_bulk_pages.jsconst request = require('request'); const URL = 'http://localhost:3000/_api/pages.create'; for (let i = 0; i < 10; i++) { request.post( { uri: URL, headers: { 'Content-type': 'application/json' }, json: { access_token: '', body: 'hoge', path: `/hoge/${i}`, }, }, (err, res, data) => { console.log(data); }, ); }
GET http://localhost:3000/_api/pages.list?pageId=hoge&limit=10 external_link
req.query = { 'pageID': 'hoge', 'limit': 10, }
補足
getとpostにおけるパラメータ
get -> query (URL ?
の後ろにあるやつ, GETメソッドは情報取得を目的としていてどうゆう情報が欲しいかを伝えるために使う)
post -> body (html formタグ内のinputの値, POSTメソッドは情報格納を目的としていて格納する情報を伝えるために使う)