我正在设计微服务架构如下:
Gateway 使用 Ocelot 转发请求。我想更改从网关端的移动设备收到的请求中的正文,并在正文中添加新的 GUID。微服务使用 CQRS 模式,因此命令不应返回任何内容。我实现了自定义中间件来更改 DownstreamContext:
public override async Task Execute(DownstreamContext context)
{
var secondRequest = JObject.Parse(await context.DownstreamRequest.Content.ReadAsStringAsync());
secondRequest["token"] = "test";
secondRequest["newId"] = Guid.NewGuid();
context.DownstreamRequest.Content = new StringContent(secondRequest.ToString(), Encoding.UTF8);
await this.Next(context);
}
我在调用 await this.Next(context); 之前调试了这个和 DownstreamRequest 的内容 已更改,但传入微服务的请求未更改。有什么方法可以更改网关中的请求并以更改的形式将此请求转发给微服务?