Moodleを使っていると一番困ることはGUIの不安定さだ。command lineで操作できないとどうにもやりにくくてお話にならない。
というわけで,改めてREST APIの使い方を調べた。
このあたりの操作を追っていけば,REST API用のユーザの作成,REST APIの有効化,Tokenの発行,まではいくのだが,肝心のREST APIでのアクセス方法の情報が間違っている。
そもそもMoodle内のtest the serviceのURL指定が間違っていて動かない。さらに・・・
Log in to the site | New Site
おそらく,参照先にもあるようにAuthorization headerが勝手に削除されてしまってtokenがきちんと渡らない。
しかもパスが"rest"となっている記事と"restful"となっている記事がある。
どうやら,インストール先のApache2の設定や,Moodle pluginのインストール場所などにいろいろと影響されてしまうようだ。
というわけで,Moodleのbitnami製docker imageを使って,curlで動作する方法を見つけた。
curl -i -X GET \ "http://MOODLE_URL/webservice/rest/server.php?wstoken=YOUR_TOKEN&moodlewsrestformat=json&wsfunction=core_webservice_get_site_info"
curl -i -X POST \ -d "wstoken=YOUR_TOKEN" \ -d "moodlewsrestformat=json" \ -d "wsfunction=core_webservice_get_site_info" \ "http://MOODLE_URL/webservice/rest/server.php"
これでGETでもPOSTでもいける。というかGETとPOSTを区別してないんですね。MoodleがPHPで作られてるからかな。
Moodleは,利用者は多いはずなのだが正確な情報が非常に少ない。調査中はまるっきりアドベンチャーゲーム状態である。謎が謎を呼ぶ展開。