【发布时间】:2020-02-09 07:03:03
【问题描述】:
我在 HTTP API 上遇到了许多 JSON,这些 API 被认为是 RESTful,但我不确定以下设计是否遵循 REST 原则 - 请求模型被用作响应模型的子集。
例如,POST /flight/inquiry 要求:
{
"flight_no":"2384B",
"departure_time":78163918839123,
"arrival_time":78163918889382,
...
}
回应:
{
"request" :
{
"flight_no":"2384B",
"departure_time": 78163918839123,
"arrival_time": 78163918889382,
...
}
"status" : "ON TIME"
"last_updated" : 7816391884313,
...
}
如果我们按照Richardson Maturity Model来分析这个,我认为它不符合1级的条件,因为没有明确的Resource定义。如果我们在此处将“查询”称为资源,则响应不应具有查询结果,例如状态、last_updated 等。通常,它应以可以传递到第二个端点的查询 ID(如 123)进行响应@ 987654324@。 这种方法虽然更符合 REST 原则(如果我错了,请纠正我),开发人员倾向于避免它,因为它很容易在单个端点而不是两个端点中压缩相同的行为。我的问题是,在这种更容易走捷径的情况下,忽略 REST 原则会产生后果吗?
【问题讨论】: