“Response.PermanentRedirect”与“MVC中的删除动词”之间的区别

时间:2012-10-29 09:10:38

标签: asp.net-mvc asp.net-mvc-3

使用“Response.PermanentRedirect”时

它将返回Http响应代码301,这意味着永久重定向到不同的位置。对于使用浏览器的最终用户而言,这可能不是任何价值,但对于搜索引擎,这将有助于搜索引擎不对永久重定向的网址进行索引。

问题 - MVC中的Delete Verb是否执行相同的功能?


发布新实体作为URI的补充。 Put替换由URI标识的实体。

问题 - 执行插入/更新时,两种情况下都会提交信息。这是否意味着在插入时,应使用Post verb,如果应使用更新Put verb

1 个答案:

答案 0 :(得分:2)

回答您的第一个问题:

从RESTful API的角度来看,DELETE必须用于从其父级(通常是集合或存储)中删除资源。一旦为给定资源处理了DELETE请求,客户端就无法再找到该资源。因此,将来尝试使用GET或HEAD检索资源的状态表示必须导致API返回404(“未找到”)状态。

DELETE方法在HTTP中具有非常特定的语义,不能由REST API的设计重载或延伸。具体而言,API不应通过将其映射到使资源及其URI可供客户端使用的较小操作来扭曲DELETE的预期含义。

应该使用

204(“无内容”)来响应PUT,POST或DELETE请求

Response.PermanentRedirect表示REST API的资源模型已经显着 重新设计并为客户端请求的资源分配了新的永久URI。 REST API应在响应的位置标题中指定新URI。

301(“永久移动”)应用于重新定位资源

对于Post and Put:

PUT必须用于添加新资源,其中包含客户端指定的URI,还必须用于更新或替换已存储的资源。 PUT还必须用于更新可变资源,而POST必须用于在集合中创建新资源。