我正在尝试构建 asp.net 核心WEB API服务,其中我想发送一致的响应,为所有请求返回类似的结构。
在早期版本的WEB API中,我们有DepratingHandler,使用它我们可以拦截响应并将元数据信息添加到响应中。
以下URL解释的内容:https://www.devtrends.co.uk/blog/wrapping-asp.net-web-api-responses-for-consistency-and-to-provide-additional-information
我尝试了 OWIN 中间件 ,但没有得到结果。
有没有办法在核心WEB API中实现它?
提前谢谢。
不知道你到底尝试了什么,但在 ASP.NET 核心中,中间件正是你所需要的,如:
中间件是组装到应用程序管道中以处理请求和响应的软件。每个组件选择是否将请求传递给管道中的下一个组件,并且可以在管道中调用下一个组件之前和之后执行某些操作。
文档中的将 HTTP 模块迁移到中间件部分解释了 ASP.NET Core 中的请求管道与以前版本之间的区别,并应帮助您了解如何编写以您需要的方式执行的中间件。
另请查看相关的 SO 问题:在核心 Web API 中注册新的委派处理程序 ASP.NET
我们可以在核心中实现类似于拦截器的东西 ASP.net 吗?
在 ASP.NET 每个请求的核心都希望调用其他外部服务,并读取动态更改的身份验证详细信息(如用户名和密码),并将其存储/更新在应用机密中以发送下游服务。尝试使用中间件,但仅调用该外部服务一次并将其插入应用程序机密字典中。如果密码在该外部服务中更改,则由于中间件管道未始终调用外部服务而未反映。
拦截器参考 : https://www.c-sharpcorner.com/article/interceptors-an-important-feature-of-http-client/