できる人はみなくて良いです（むしろもっと良い方法あったら教えてください）
# 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 の api 設定で取得できる
    - これがあれば POST の場合の csrf トークンは不要
- apiリクエストに必要な情報
    - https://docs.growi.org/en/api/rest-v3.html
    - (swagger 意識しよう to me)
        - path
        - body
- 上記に挙げた api 投げるためのライブラリ or ソフトウェアの中で繰り返し処理の方法を知っているもの(今回はnodeでのやり方を紹介)


#### node の request モジュールを使ってみる
とりあえずhello world

```javascript:hello.js
console.log('hello world');
```

```
$ node hello.js
> hello world
```


request を使ったapiリクエスト作成

```javascript:create_page.js
const 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);
    },
  );
```

繰り返し処理

```javascript:create_bulk_pages.js
const 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

req.query = {
    'pageID': 'hoge',
    'limit': 10,
}
#### 補足
getとpostにおけるパラメータ

get -> query (URL `?` の後ろにあるやつ, GETメソッドは情報取得を目的としていてどうゆう情報が欲しいかを伝えるために使う)

post -> body (html formタグ内のinputの値, POSTメソッドは情報格納を目的としていて格納する情報を伝えるために使う)


---

## Page Navigation

- Canonical URL: https://tips.weseek.co.jp/開発日記/動作確認用にページをたくさん作りたい
- Permalink: https://tips.weseek.co.jp/5f80326633588b0048eaf865
- Parent: [開発日記](/5e3d294bcff797004b16abba.md)
- Children: 0 total
- Total descendants: 0
- Siblings: 20 total
  - [GROWIのAPIを使用したアプリケーション](/5e5bd0e3e7f8db0048df3a08.md)
  - [GitとGitHubの違い](/5e417dcadecd0a0049953ad7.md)
  - [LDAP攻略への道](/5e48b2561ec5e4004811d4e9.md)
  - [Migrationsファイルを作成する](/5e9d1dc7b682620049e55a64.md)
  - [QiitaでGROWIが設計書システムとして紹介されました](/5e535a04eb17ce0048b9fb13.md)
  - [UserManagement](/65069da24603e7ff39a6b3d2.md)
  - [aタグ以外での画面遷移](/5e9cfd51b682620049e55a5d.md)
  - [jestを使ったテストを初実装しました](/5ef1ed225eea4b004a1912b2.md)
  - [npm とyarn の違いを簡単に説明](/5e3e6822591d7f0048b3cc5e.md)
  - [react-card-flipを使って回転するカードレイアウトを作る](/5ebaa05ad3055000488bd526.md)
  - [throttleでスクロールイベントを間引く](/5e8de43931511b0048ecf612.md)
  - [vuepressのテンプレート内で二重波括弧をエスケープ](/5f16ecf4c2f6150048b2955b.md)
  - [なぜsetStateをComponentDidMountで使用してはいけないのか](/5eb7728458c8ea00480d0825.md)
  - [アジャイルとウォーターフォール](/5e4137d343c1c400499b6bac.md)
  - [セルフレビューはどこまで確認しようか](/5e3d2adfcff797004b16abbe.md)
  - [ソート機能の実装](/5e8aadc15245e70048c22c7c.md)
  - [タスクを円滑にこなすために必要な垂れ流しとは](/5e47a18a927c020048448a18.md)
  - [ページ内リンクの実装](/5e93c9d511007300489677ff.md)
  - [レビュー依頼する際に確認すること](/5e3ae41225751e00499297f6.md)
  - [間違えてマージしてさらにプッシュしちゃった](/5e9d176db682620049e55a60.md)
- Last updated: 2020-10-09T12:02:01.536Z by deleted_at_1672138409189
- Full page listing (all children regardless of count): https://tips.weseek.co.jp/_api/v3/page-listing/children?id=5f80326633588b0048eaf865
