【发布时间】:2019-02-11 12:32:53
【问题描述】:
我正在重构一个分析 API,它需要允许客户端将事件作为 HTTP GET 请求发送,其“命中”数据编码在 URL 的 QueryString 参数中。
我的 API 的工作是接收这些事件,然后将 "valid" 事件放入系统另一部分的队列中进行处理。
一些 Hits 具有相同的形状。唯一使它们不同的是type 参数的值,所有事件都必须至少具有该值。
我遇到的问题是基于Hit类型,我希望能够假设给我的每个字段的类型,这需要模型绑定。当然。目前,我只能在检查 type 的值后才能找出要验证的模型 - 这可能会使 API 过度使用 "stringly typed"
一个示例路线是:
获取https://my.anonymousanalytics.net/capture?type=startAction&amount=300&so_rep=true
因此,我的命中是:
{
type: "startAction",
amount: 300,
so_rep: true
}
假设可以绑定到模型StackOverflowStartHitModel
class StackOverflowStartHitModel {
public string type { get; } // Q: Could I force the value of this to be "startAction"?
? public int amount { get; }
public boolean so_rep { get; }
}
我为什么要在这里问这个?好吧,我通常是一名 JavaScript 开发人员,但我通常会求助于 C# 智慧的每个人都因流感而下班了。
我已经尝试过 [FromQuery] 属性装饰器,但我担心的是对于形状完全相同的 Hits,我可能无法区分它是 startAction 还是 endAction ,例如。
【问题讨论】:
-
你还有哪些型号?
-
我真的只是举个例子。目前我们有 11 个独特的模型,我们的一些事件成对工作,具有匹配的开始和结束事件。它们的形状完全相同,但类型值不同。
-
是否有控制器或其他东西可以“获取”数据并对其进行处理?
-
是的,有一个控制器
标签: c# asp.net asp.net-mvc asp.net-web-api asp.net-core