我无法理解204 HTTP状态代码的用例。 RFC2616说:
10.2.5 204无内容
服务器已完成请求但不需要返回 entity-body,可能想要返回更新的元信息。该
响应可以包括以形式的新的或更新的元信息 实体标题,如果存在,应该与
相关联 要求的变体。如果客户端是用户代理,它不应该更改其文档 从导致请求发送的视图。这个回应 主要用于允许进行操作的输入 在不导致更改用户代理的活动文档视图的情况下, 虽然应该应用任何新的或更新的元信息 当前在用户代理的活动视图中的文档。
204响应绝不能包含消息体,因此是 始终以标题字段后的第一个空行终止。
“文档视图”是指DOM吗?
例如,如果我发送了一个删除用户的AJAX请求,并且在我的请求成功完成后我更新了我的页面以从列表中删除用户,那么服务器是否应该给我一个带有{}作为响应的200或者204没有身体?
编辑:我主要关注的是“如果客户端是用户代理,它不应该从导致请求发送的文档视图中更改它的文档视图。”部分。用我自己的话来重新表述:如果我返回204,我可以更新DOM吗?
答案 0 :(得分:4)
答案 1 :(得分:4)
“文档视图”是否指向DOM?
不完全是,它表示渲染文档。 DOM不是呈现文档的表示。它是文档树的抽象模型。每个UA可能会以不同的方式呈现它。
我发出删除用户的AJAX请求,然后更新我的页面以删除 我的请求成功完成后,列表中的用户, 如果服务器给我200作为响应或204 没有身体?
这取决于API以及它是如何'符合'的。因此,如果您使用'DELETE'动词提交删除请求(因此,它是一个RESTful API),那么响应应该是200 OK;但如果API特别迂腐,它也可以发送204.
如果您只是向'/ some / view?id = 1& action = delete'发送GET请求,很可能返回200 OK
在任何一种情况下,由于第二部分,您可以自由更改DOM(从而触发重新呈现文档):
虽然任何新的或更新的元信息应该应用于 当前在用户代理的活动视图中的文档。
因此,使用 表示记录已被删除符合此要求。<strike>