使用webapi默认值我能够发送和接收JSON数据。我现在有一个场景,我的api控制器无法区分获取动作
解决这个问题我使用了ActionNameAttribute
[ActionName("ById")]
public Model Get(PoByIdQuery model)
{
return repo.Get(model);
}
[ActionName("ByPoNumber")]
public Model Get(PoByNumberQuery model)
{
return repo.Get(model);
}
这会将网址更改为
现在的问题是当我检索它的值时,没有格式化器可用于text / html类型。如何配置mvc4 / webapi以使用json格式化程序进行text / html请求?或者,我如何更改我的调用请求以请求json而不是html?
答案 0 :(得分:0)
<强>解决强>
首先我需要添加路由。默认情况下,webapi会忽略该操作。所以我创建了一个包含动作的路线
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new { action = "ById", id = RouteParameter.Optional });
下一个问题是行动的论点。根据{{3}}。复杂类型从正文中获取,简单类型从查询字符串中提取。我可以使用[FromUri]
覆盖此行为并从查询字符串中提取po号。
有一个副作用,我现在可以处理。我必须为{id}
提供一个参数。所以我的网址看起来像这样