实现一个用于记录 IOU 的 RESTful API。
四个室友经常互相借钱,却总是记不清谁欠谁、欠多少。
你的任务是实现一个简单的 RESTful API,通过 POST 请求接收 IOU,并能通过 GET 请求返回指定的汇总信息。
{
"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> |
| 创建 IOU | 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。