K's Atelier

個人的な学習記録

REST API on Moodle

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を区別してないんですね。MoodlePHPで作られてるからかな。

Moodleは,利用者は多いはずなのだが正確な情報が非常に少ない。調査中はまるっきりアドベンチャーゲーム状態である。謎が謎を呼ぶ展開。