查询不存在的记录,使用HTTP 200返回null

时间:2018-07-19 09:28:56

标签: mysql sql rest api mule

我有点困惑。我对MySQL数据库执行了一个简单的SELECT查询以获取一条记录,该记录不存在,并获得HTTP 200响应,其中每个元素均为null。查询是通过RESTful API执行的,我仍然在开发它。也许我错过了某些东西,例如响应代码的定义?

数据库

enter image description here

查询

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

数据库架构

enter image description here

我不会收到HTTP代码404或400吗?

2 个答案:

答案 0 :(得分:3)

在天真的世界中,是的,404将是“逻辑的”。在第3方的现实世界中,截止日期,不正确的文档和“战术解决方案”会把404错误消息视为客户端/服务已损坏,因为无法区分“服务器丢失”和“结果是丢失”。

200位回复为空是实现“我在这里,但您要的不是”的一种很好而流畅的方法。

答案 1 :(得分:1)

HTTP状态为400表示请求错误。

HTTP状态为404表示未找到。

这两个都不适用于您的情况,因为您的请求已正确到达预期到达的API并执行了预期执行的功能。

MySQL请求没有任何结果,因此有两个选择。第一种是返回404状态代码,另一种是实现用户友好的逻辑错误句柄,并在出现逻辑错误的情况下应用它。