【发布时间】:2018-02-27 16:47:08
【问题描述】:
我有一个可以获取并返回文件结果的内部 API。但是,此 API 没有任何身份验证/角色/权限检查的概念,因此无法修改。
我想在现有的 ASP.NET Core 2 Web API 上创建一个 Web API 端点来进行权限检查,调用此内部 API 并将文件结果返回给 Web 客户端。
是否有可能让包装器 API 端点仅将其获取的任何内容作为文件结果传递,而无需重构响应(例如,指定文件名、内容类型等)?文件可以是图像、pdf、文档。我希望这个包装 API 只进行权限检查并使用某种 fileId 调用内部 API 端点,而不需要知道内容长度或类型。
【问题讨论】:
-
你不能使用像 NGINX 这样的反向代理来做到这一点吗?或服务网关。
-
不幸的是,我无法访问可以让我走这条路的资源。
-
简短回答:不。您可以流式传输 HttpClient 响应正文,但您仍然必须手动设置状态代码和响应/内容标头。
-
您可以考虑编写自己的
IActionResult实现来完成所有这些工作(即HttpClientResponseResult)。然后,您还可以向Controller添加扩展以利用此自定义实现,以便它像其他内置插件一样工作(即return HttpClientResponse(response);。 -
第二个 API 可以公开访问吗?如果是这样,返回一个
302将浏览器重定向到文件的 URL 怎么样?
标签: c# asp.net-core-2.0 asp.net-core-webapi