【发布时间】:2022-06-11 20:54:52
【问题描述】:
我有一个带有多个端点的 API。我想为所有端点响应添加一个属性,而不是将其单独添加到每个端点响应模型中。
例如:
public class MyClass
{
public string MyProperty { get; set; } = "Hello";
}
public class MyOtherClass
{
public string MyOtherProperty { get; set; } = "World";
}
public class MyController : ControllerBase
{
[HttpPost]
public async Task<ActionResult<MyClass>> EndpointOne(POSTData data)
{
// implementation omitted
}
[HttpPost]
public async Task<ActionResult<MyOtherClass>> EndpointTwo(POSTOtherData otherData)
{
// implementation omitted
}
}
调用任一端点会根据需要返回 MyClass 或 MyOtherClass 的 JSON 表示 - 即
{ "MyProperty":"Hello" } or { "MyOtherProperty":"World" }
我想向 API 中的所有端点添加一个属性,比如字符串 ApiName,以便上述代码的结果将是(视情况而定)
{ "MyProperty":"Hello", "ApiName":"My awesome API" }
或
{ "MyOtherProperty":"World", "ApiName":"My awesome API" }
有没有办法在返回之前挂钩 JSON 字符串化的结果并添加这样的顶级属性?如果是这样,我想我必须将它连接到startup.cs,所以我一直在研究app.UseEndpoints(...) 方法,但到目前为止还没有找到任何有效的方法。要么没有添加属性,要么将原始结果替换为新属性。
提前致谢!
【问题讨论】:
-
听起来你需要一个中间件。
-
是的,你需要一个中间件。这是一个类似的问题,答案是stackoverflow.com/questions/37395227/…
标签: c# asp.net-core