asp.net-core-webapi - C# .Net Core WebAPI - 如何返回/重

我有一个 WebAPI。如何返回并打开网页。例如,我想打开 CNN.com 页面。

  [HttpGet]
        public HttpResponseMessage Get()
        {
            //TODO: OPEN THE CNN.COM WEB PAGE 

我见过这样的例子:

   try {
        var response = Request.CreateResponse(HttpStatusCode.Redirect); // tried MOVED too
        response.Headers.Location = new Uri("cnn.com");
        return response;
    } catch (Exception e) {
        ErrorSignal.FromCurrentContext().Raise(e);
        return Request.CreateResponse(HttpStatusCode.InternalServerError, e);
    }

但是 Request.CreateResponse 不是 .Net Core 3 中的一个选项

有什么想法吗?提前致谢

最佳答案

不要返回 HttpResponseMessage。没有必要这样做,它只会让事情变得比他们需要的更复杂。相反,返回 IActionResult:

[HttpGet]
public IActionResult Get()
{
    return Redirect("https://cnn.com");
}

我想您的逻辑在这里会更复杂,因为拥有一个除了重定向到完全不同的站点之外什么都不做的 API 端点是没有意义的。使用 IActionResult 作为返回值,您可以返回多种不同类型的结果。例如,您可以执行以下操作:

if (!ModelState.IsValid)
    return BadRequest(ModelState);

// do something
return Ok();

重定向通常在 API 中没有多大意义,因为大多数与 API 交互的客户端不像网络浏览器那样工作。重定向实际上是一个完整的响应。 Web 浏览器自行自动跟踪该响应的 Location header 中的 URL,因此它对最终用户来说是无缝的。但是,默认情况下,大多数瘦客户端不会自动遵循重定向。使用您的 API 的程序员必须添加代码来检测重定向是否发生,然后针对该新 URL 发出新请求。重定向到 CNN 主页之类的内容更没有意义,因为响应不会是使用您的 API 的程序员可以真正做任何事情的东西。例如,他们实际上永远不会返回来自 HttpClient 之类的响应的 HTML,因为如果不实际托管在 CNN.com 上,它就无法工作。我知道这可能是一个人为的例子,但总的来说值得一提。来自 API 的响应应该是数据,而不是 HTML 之类的东西,因为在 API 上下文中接收 HTML 是没有意义的。

关于asp.net-core-webapi - C# .Net Core WebAPI - 如何返回/重定向到网页,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59663443/

相关文章:

flutter - 没有合适的 Android AVD 可用

stripe-payments - 在 Stripe CLI 中使用 fixtures

java - 如何修复我的maven项目中的mysql版本

c++ - 如何在 C++ 中获得 std::u8string 的正确长度?

c# - C# 中输出参数的良好实践

python - 从 BigQuery 获取数据需要很长时间

django - 错误模块 'tablib.formats._xls' 没有属性 'title'

html - 容器中元素之间的空间

angular - 将 Angular 4 升级到 Angular 8

c# - 尝试激活图形 API 时无法解析类型 'Microsoft.Identity.Web.IT