是否存在与MVC ActionMethodSelectorAttribute
等效的Web API?
我的具体目的是:例如,我有一个ResourceController
,当我POST
到控制器时,我希望能够收到一个资源({{1} })或列表(Resource
)。
我希望创建两个具有不同参数的方法会导致反序列化过程进行一些评估,但事实并非如此(坦率地说,我不认为内容协商和许多数据格式(如JSON)使得很难推断出数据类型。所以我最初有:
IEnumerable<Resource>
...但这会导致“多重操作”错误。所以我调查了如何对我的方法进行注释并遇到public HttpResponseMessage Post(Resource resource) {...}
public HttpResponseMessage Post(IEnumerable<Resource> resources) {...}
,但也发现这只适用于MVC路由而不是Web API。
所以...不需要一个不同的路径来发布多个资源而不是一个(这不是世界末日),我该做些什么来区分?
我对ActionMethodSelectorAttribute
的想法是要求一个指定多个的查询参数,我想这与另一个路径没什么不同。所以,我认为我刚刚删除了当前需要这样做,但我仍然想知道Web API是否有等效的ActionMethodSelectorAttribute
:)
答案 0 :(得分:1)
我还没有看到该方法的替代品(有一个IActionMethodSelector
接口,但它是DLL内部的)。一个选项(虽然它似乎可能过度使用)是重载所使用的IHttpActionSelector
实现。
但是稍微换档,为什么不总是期待IEnumerable<Resource>
?我的第一个猜测是,收集方法(需要IEnumerable<Resource>
)只是循环并调用单个值(只是Resource
)函数?