我有点困惑。我对MySQL数据库执行了一个简单的SELECT
查询以获取一条记录,该记录不存在,并获得HTTP 200响应,其中每个元素均为null。查询是通过RESTful API执行的,我仍然在开发它。也许我错过了某些东西,例如响应代码的定义?
数据库
查询
SELECT *
FROM csv_data.data
WHERE id = 20
响应(HTTP 200 OK)
{
"id": null,
"purchase": null,
"price": null,
"date": null,
"notes": null
}
API RAML
/{purchaseId}:
uriParameters:
purchaseId:
type: string
description: Id of a purchase
required: true
example: "4"
get:
displayName: Get a single purchase
description: Gets a single record of purchase
responses:
200:
description: Status 200
body:
application/json:
type: Purchase
example: !include examples/get_purchase_example.json
400:
description: Status 400
body:
application/json:
type: Error
数据库架构
我不会收到HTTP代码404或400吗?
答案 0 :(得分:3)
在天真的世界中,是的,404将是“逻辑的”。在第3方的现实世界中,截止日期,不正确的文档和“战术解决方案”会把404错误消息视为客户端/服务已损坏,因为无法区分“服务器丢失”和“结果是丢失”。
200位回复为空是实现“我在这里,但您要的不是”的一种很好而流畅的方法。
答案 1 :(得分:1)
HTTP状态为400表示请求错误。
HTTP状态为404表示未找到。
这两个都不适用于您的情况,因为您的请求已正确到达预期到达的API并执行了预期执行的功能。
MySQL请求没有任何结果,因此有两个选择。第一种是返回404状态代码,另一种是实现用户友好的逻辑错误句柄,并在出现逻辑错误的情况下应用它。