.net Core 3.0 / 3.1向http请求写入自定义响应

时间:2019-12-12 21:22:21

标签: .net-core-3.0 .net-core-3.1

我正在编写Api网关并实现我们需要的自定义聚合器。为此,我通过中间件接收任何传入的HTTP请求,询问该请求以查看这是否是我需要处理的请求,如果是,则对不同的api进行多个下游调用以获取需要重新组装的片段一起做出回应。如果不是我要处理的对象,则将其转发到下游系统(例如,像反向代理一样),因此我不会仅通过中间件拦截来实现Web api控制器。

在.net core 2.x中,我将使用诸如originalIncomingRequest.CreateResponse之类的方法在所有聚合调用完成后创建我的自定义响应,然后将我缝合在一起的json响应写入响应主体。

.net core 3.x中似乎不存在这种扩展方法

看起来像我这样(例如)

var json = JsonConvert.SerializeObject(aggregation);
var b = Encoding.UTF8.GetBytes(json);

originalIncomingRequest.HttpContext.Response.StatusCode = 200;
await request.HttpContext.Response.Body.WriteAsync(b, 0, b.Length);

但这是很久以前的一种模式。....net core 3.x中是否有更简单的方法来实现此目标?

1 个答案:

答案 0 :(得分:0)

如果您想将此代码用作中间件,则应尝试以下代码:

app.Use(async (context, next) =>
{
    var json = JsonConvert.SerializeObject(<aggregation>);
    var b = Encoding.UTF8.GetBytes(json);

    context.Response.StatusCode = 200;
    await context.Response.Body.WriteAsync(b, 0, b.Length);
});