借用書を管理するRESTful APIを実装します。
4人のルームメイトは、お互いに頻繁にお金を貸し借りするのが癖で、誰が誰にいくら借りているのかを覚えておくのに苦労しています。
ここでの課題は、借用書をPOSTリクエストとして受け取り、GETリクエストで指定された集計情報を返せるシンプルなRESTful APIを実装することです。
{
"name": "Adam",
"owes": {
"Bob": 12.0,
"Chuck": 4.0,
"Dan": 9.5
},
"owed_by": {
"Bob": 6.5,
"Dan": 2.75
},
"balance": "<(total owed by other users) - (total owed to other users)>"
}
| 説明 | HTTPメソッド | URL | ペイロード形式 | ペイロードなしのレスポンス | ペイロードありのレスポンス |
|---|---|---|---|---|---|
| ユーザー情報の一覧 | GET | /users | {"users":["Adam","Bob"]} |
{"users":<List of all User objects>} |
{"users":<List of User objects for <users> (sorted by name)} |
| ユーザーの作成 | POST | /add | {"user":<name of new user (unique)>} |
N/A | <User object for new user> |
| 借用書の作成 | POST | /iou | {"lender":<name of lender>,"borrower":<name of borrower>,"amount":5.25} |
N/A | {"users":<updated User objects for <lender> and <borrower> (sorted by name)>} |
RestAPIクラスのgetメソッドとpostメソッドを実装します。
書くのはハンドラー関数だけで、実際のHTTPサーバーを実装する必要はありません。
データベースは、保存されたすべてのユーザーを保持するメモリ上のオブジェクトでモックできます。
RestAPIクラスのコンストラクターは、このデータベースのインスタンスを引数として受け取るようにします(引数が渡されなかった場合は、デフォルト値を設定します)。
この実装では、GETリクエストの場合、ペイロードはURLの一部とし、クエリパラメータのように扱います。たとえば、/users?users=Adam,Bobのようになります。
Exercismに登録すれば、37個のコンセプト159個の演習、そして本物の人間によるメンタリングとともに、JavaScriptを学んでマスターできます。すべて無料です。