您的 API 应该返回什么响应?
视情况而定。
状态代码是transfer of documents over a network 域中的元数据。状态码将 HTTP 响应的semantics 传达给通用组件。例如,状态码向缓存通告响应的消息正文是“资源的表示”还是an error situation 的表示。
数据库中的行是一个实现细节;就 REST 而言,不一定要有数据库。
REST 关心的是资源,在这种情况下,资源是否具有当前表示。 REST 不会告诉您资源模型应该是什么,或者它是如何实现的。 REST 告诉您的(通过它的标准化消息约束,在本例中是指 HTTP 标准)是如何描述资源模型中发生的事情。
例如,如果我的资源是“待办事项”,并且一切都已完成,那么我通常期望“待办事项”的 GET 请求返回一个 2xx 状态代码,其中表示无事可做(可能是一个完全空的文档,也可能是一个包含空项目列表的网页,或者是一个 JSON 文档……你懂的)。
如果数据库中的空结果集表明 URI 中存在拼写错误,则 404 是合适的。
考虑一个无聊的 Web 服务器可能会有所帮助,以及检索空文件与检索不存在的文件有何不同。
但是,和以前一样,在某些资源模型中,在没有文件的情况下返回“默认”表示可能是有意义的。
如果您有 REST API.. 用于.. 说.. 返回患者详细信息...
在资源模型中有一个文件说“我们没有这个病人的记录”是否合理?
我不是医疗文件领域的专家,但对我来说,我们可能会取回一份没有任何信息的文件,这听起来很合理。 “这是我们获悉的有关该患者的所有信息的清单”和一个空白清单。
您的 API 应该返回什么响应?
如果您要返回错误的表示形式 - 即解释某人要求的文档丢失的文档,那么您应该使用 404 Not Found 状态代码(以及指示该响应可以持续多长时间的其他元数据)缓存等)。
如果您要返回文档,则应使用带有 Content-Length 标头的 200 OK。
204 是专用的,不应在此处使用。 Content-Length 为 0 的 204 和 200 之间的主要区别在于 navigation 的含义。