クリーム色の背景、色付き表示、高コントラスト、大きな文字のほうが読みやすいですか?配色と文字を選ぶと、すべてのページに一度で反映されます。

無料レッスン

API の基本

レッスン全文をここで読めます。無料アカウントを作成すると、実際のラボで実践できます。

コンテナラボ読了目安 9分コマンド8個

このレッスンでやること

データベースは、情報をテーブルに入れて保管します。Web API は、プログラムがその情報を Web 経由で求められるようにするものです。ここでは、本物のデータベースにテーブルを作ります。そして curl で Web リクエストを送り、データを読んだり変えたりします。スマホのアプリがサーバーと話すのと同じやり方です。

始める前に

メモ

このレッスンの上にあるバーのラボを起動を押し、「実行中」と出るまで待ちます。最初の起動は、先にデータベースが立ち上がるので、数秒かかります。下の実行ボタンは、それぞれのコマンドをラボのターミナルに順番に入力します。すべて同じセッションで動きます。様子を見たり、自分でコマンドを打ったりしたいときは、バーのターミナルを開く(新しいタブ)を押します。

1. テーブルを作る

データベースの名前は shop です。ここでは notes(メモ)というテーブルを作ります。列は 2 つで、自動で数が増える id と、メモの文章 body です。PGPASSWORD はパスワードで、これを設定しておくと、毎回聞かれません。

コマンド
export PGPASSWORD=shop

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
psql -h db -U shop -c "create table notes (id serial primary key, body text not null)"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

2. メモを 1 つ入れる

insert は行を追加します。2 つ目のコマンドは、API にデータベースをもう一度読み直させます。API は起動したときに一度だけ読んでいて、そのときはまだ notes がなかったからです。

コマンド
psql -h db -U shop -c "insert into notes (body) values ('hello')"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
psql -h db -U shop -c "notify pgrst, 'reload schema'"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

3. Web 経由で読む

API は、テーブルに Web のアドレスを用意します。curl がそのアドレスに問い合わせると、答えが JSON で返ってきます。JSON はプログラムが読みやすい文字の形式で、[{"id":1,"body":"hello"}] のようになります。-w "\n" は答えの最後に改行を付けるので、答えがコマンドの下の行にきれいに出ます。

コマンド
curl -s -w "\n" http://api:3000/notes

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

4. Web 経由でメモを足す

POST リクエストは行を追加します。-d の部分が新しいメモで、JSON で書きます。そのあとテーブルをもう一度読むと、メモが 2 つになっています。

コマンド
curl -s -X POST -H "Content-Type: application/json" -d '{"body":"from curl"}' http://api:3000/notes

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

コマンド
curl -s -w "\n" http://api:3000/notes

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

5. 少しだけ求める

アドレスに言葉を足すと、テーブルの一部だけを求められます。この例では、body が hello のメモだけを求めています。

コマンド
curl -s -w "\n" "http://api:3000/notes?body=eq.hello"

ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。

6. 残るものを確かめる

バーのラボを停止を押し、もう一度ラボを起動を押します。そしてステップ 3 をもう一度実行すると、メモはまだ残っています。データベースは、ファイルを名前付きのボリュームに置いていて、プラットフォームがそのボリュームを保存してくれるからです。ボリュームの外に書いたものは、ラボが止まると消えます。本番環境のコンテナも同じ動きをします。

先生へ

ヒント

このレッスンは、ラボで進めるレッスンの小さな例です。手順と実行ボタンがレッスンで、ラボは生徒一人ひとりの専用コピーです。ラボはデータベースと API の 2 つのサービスでできていて、お互いを名前で見つけます。本物のアプリケーションと同じ形です。自分のモジュールにコピーして変えることも、レッスンビルダーのラボメニューから一から作ることもできます。

このラボとソースについて: PostgreSQL と PostgREST のラボ:ブラウザーで学ぶデータベースと REST API

授業で教えていますか?これらのレッスンを生徒に割り当て、採点と生徒ごとのラボを使えます。