curlコマンドを使ってAOJから自分の情報を取得してみた
目的
思ったよりも手間取ったので調べたことの備忘録。API初心者です。
AOJのAPIリファレンス
実際に使ったコマンド
$ curl -X POST -H "Content-Type: application/json" -d '{"id":"my_name", "password":"my_password"}' https://judgeapi.u-aizu.ac.jp/session
わからなかったこと
$ curl -X POST -H "Content-Type: application/json" -d '{"id":"my_name", "password":"my_password"}' https://judgeapi.u-aizu.ac.jp/session
AOJのAPIリファレンスを読んで、
自分のidとpasswordをJSONの形でパラメータにするらしい。
POSTってなに?
HTTP リクエストメソッドによると、
POST は指定したリソースに実体を送信するために使用するメソッドであり、サーバー上の状態を変更したり、副作用が発生したりすることがよくあります。
だから今回使うのはPOSTじゃなくてGETなんじゃないの? と思ったのですが、今回は自分のidとpasswordをjson形式でパラメータ付与してリクエストするので、POSTらしい。
エンドポイントってなに?
RESTful APIのURI設計(エンドポイント設計)によると、
エンドポイントとはAPIにアクセスするためのURIのこと。
らしい。ARIはUniform Resource Identifier つまりリソースを識別するためのもの。また、
似たような言葉に「エントリポイント」というものがある。エントリポイントとはプログラムやサブルーチンの実行を開始する場所のこと。
つまり、エンドポイントはAPIにアクセスする側からの、エントリポイントはアクセスされる側からの違いということになる。
今回のコマンドで言うところの、APIの末尾、/session のところ。これをReferenceを見て任意のURIに変更すれば任意のデータが取得できる。
コマンドライン上のオプションがわからない
curl option 覚え書きより、今回使ったオプションについてまとめておく。
$ curl -X POST -H "Content-Type: application/json" -d '{"id":"my_name", "password":"my_password"}' https://judgeapi.u-aizu.ac.jp/session
-X
curl は何も指定しないと GET のリクエストを発行するけど、それを変えたい時に使う。
らしい。今回はPOSTリクエストなので-X必須。
-H
OAuth のトークンとか渡すときに使うオプション。
HTTP の Request Header に情報を追加できる。
最初必要ないかなと思ったけど必要だった。また、JSONのMIMEタイプには今回はapplication/jsonを使用した。
-d
このオプションを指定すると curl は POST メソッドでリクエストを送る。
ほんでもってここで指定されたデータが Request Body に入る。
key=value の形式で書く必要がある。
なので今回はidとpasswordをJSONの形で記述。
まとめ
AOJってAPI叩く練習にいいのかもしれない…
次はデータをjavascriptとかで取得できるようにしたい。
Author And Source
この問題について(curlコマンドを使ってAOJから自分の情報を取得してみた), 我々は、より多くの情報をここで見つけました https://qiita.com/Yasaka-H/items/42ea30092a6ce4689648著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .