このレッスンでやること
API の基本では、メモを読んだり追加したりしました。ウェブ API がデータに対してすることは4つあります。作成、読み取り、更新、削除で、それぞれ別の種類のリクエストです。ここでは更新と削除をやります。メモを変えることと消すことです。そして API が返すステータスコード(うまくいったかどうかを表す番号)を見ます。
はじめる前に
メモ
このレッスンの上のバーにある ラボを起動 を押して、実行中と表示されるまで待ちます。最初の起動は数秒かかります。先にデータベースが起動するからです。下の 実行 ボタンを押すと、コマンドがラボのターミナルに順番に入力されます。同じセッションの中で続けて動きます。動きを見たり自分で入力したりするには、バーの ターミナルを開く(新しいタブ) を押します。
1. 変更するメモを用意する
API の基本をまだやっていなければ、ここで notes 表を作り、メモを2つ入れ、API にデータベースをもう一度読むように伝えます。最初のレッスンをやった人は表がもうあるので、psql が NOTICE でそのことを知らせ、そのまま進んで、メモをさらに2つ追加します。それで問題ありません。?order=id はメモを id の順に並べます。-w "\n" は答えの最後に改行を入れて、コマンドの下に答えが来るようにします。
export PGPASSWORD=shopここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
psql -h db -U shop -c "create table if not exists notes (id serial primary key, body text not null)"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
psql -h db -U shop -c "insert into notes (body) values ('one'), ('two')"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
psql -h db -U shop -c "notify pgrst, 'reload schema'"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
curl -s -w "\n" "http://api:3000/notes?order=id"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
2. メモを変える
PATCH リクエストは、行の一部を変えます。?id=eq.1 は、どの行かを指定します。id が1に等しい行です。API は 204 を返します。これは「できました。送り返すものはありません」という意味です。もう一度表を読むと、メモが変わっています。
curl -s -o /dev/null -w "%{http_code}\n" -X PATCH -H "Content-Type: application/json" -d '{"body":"changed"}' "http://api:3000/notes?id=eq.1"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
curl -s -w "\n" "http://api:3000/notes?id=eq.1"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
3. メモを削除する
DELETE リクエストは、条件に合う行を消します。ここでは id が2の行です。今回も 204 が返ります。もう一度表を読むと、その行はなくなっています。
curl -s -o /dev/null -w "%{http_code}\n" -X DELETE "http://api:3000/notes?id=eq.2"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
curl -s -w "\n" "http://api:3000/notes?order=id"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
4. ステータスコードを読む
どの答えも、最初にステータスコードがあります。200 は「どうぞ」、201 は「作りました」、204 は「できました」、404 は「そういうものはありません」という意味です。存在しない表を頼むと 404 が返り、ある表を頼むと 200 が返ります。
curl -s -o /dev/null -w "%{http_code}\n" http://api:3000/notesここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
curl -s -o /dev/null -w "%{http_code}\n" http://api:3000/nothingここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
先生へ
ヒント
このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりのコピーです。このレッスンは API の基本と同じデータベースと API のラボを使います。データベースのファイルはプラットフォームが保存するボリュームに置かれるので、生徒のメモは次回も残っています。ご自分のモジュールにコピーして変更するか、レッスンビルダーの ラボ メニューから最初から作ってください。