我需要返回一個與所有請求返回類似結構的一致響應。在以前的.NET web api中,我使用DelegatingHandler(MessageHandlers)實現了這一點。我想要返回的對象將封裝在Result元素中。所以基本上JSON響應會在這種結構:如何包裝Web API響應(在.net核心中)以保持一致性?
例1:
{
"RequestId":"some-guid-abcd-1234",
"StatusCode":200,
"Result":
{
"Id":42,
"Todo":"Do Hello World"
}
}
例2:
{
"RequestId":"some-guid-abcd-1235",
"StatusCode":200,
"Result":
{
[
{
"Id":42,
"Todo":"Print Hello World"
},
{
"Id":43,
"Todo":"Print Thank you"
}
]
}
}
在.NET中的核心,它看起來像我需要這樣做通過中間件。我嘗試過,但我沒有看到一種更好的方式來提取內容,比如在以前的Web API中如何調用HttpResponseMessage.TryGetContentValue
來獲取內容並將其包含在全局/通用響應模型中。
如何在.NET核心中實現相同?
是,中間件是一個控制點進行註冊。您需要緩衝正文,重新解析它,更新它併發送結果。 MVC也可能有響應過濾器,可以在序列化之前更改動作結果。 – Tratcher
你在你的項目中使用什麼架構?如果你有n層邏輯,你不必將自己的對象包裝到你的web項目中,你可以在業務層或者層上做到這一點。如果你想在執行動作後包裝你的結果,那麼中間件是一種選擇,我什麼都不知道。 – kizilsu
@kizilsu在n層架構中,業務層包含豐富的域模型。所以在api層,它需要映射到你想暴露給你的api的「dumb」/ view/dto模型。在映射之後,需要將其設置爲一致性響應模型中的Result屬性/字段。 – alltej