【问题标题】:Redirection from ASP.Net Web API controller action从 ASP.Net Web API 控制器操作重定向
【发布时间】:2014-02-13 16:40:31
【问题描述】:

我的 api 控制器需要使用 2 个参数实现一个简单的 GET 操作:一个 ItemID 和一个 SectionID。 返回类型 ItemInSection 包含有关节中项目的数据。

同一个项目可以在多个部分中。这就是需要 SectionID 的原因。

如果该项目已被移动并且不再在相应的部分中,我需要返回一个重定向代码 301,其位置 URL 对应于包含该项目的部分之一。

最好的方法是什么?

对于其他错误(例如 404、401 ...)代码,我使用 HttpResponseException。但是对于 301 的情况,如何指定重定向 url?

【问题讨论】:

  • 能不能不用API来检查item是否存在?那么,如果它已经被移动并且不再在相应的部分,重定向用户呢?不知道如何使用HTTP响应异常方法——或许有一个参数可以使用。
  • 在我看来,对 API 施加两次连续调用不是 REST 架构。

标签: asp.net redirect http-headers


【解决方案1】:

解决方案是简单地使用HttpResponseException(HttpResponseMessage response) 构造函数(而不是使用简单的HttpStatusCode 构造函数)。

只写:

HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.Moved);
response.Headers.Location = ...;
throw new HttpResponseException(response);

【讨论】:

    猜你喜欢
    • 2012-07-04
    • 2014-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多