Asp.net web api webapi mediatypeformatter文本/html
使用webapi默认值,我能够发送和接收JSON数据。我现在有一个场景,我的api控制器无法区分get操作Asp.net web api webapi mediatypeformatter文本/html,asp.net-web-api,Asp.net Web Api,使用webapi默认值,我能够发送和接收JSON数据。我现在有一个场景,我的api控制器无法区分get操作 api/控制器?ponumber=### 控制器?id=####(或api/控制器/####) 为了解决这个问题,我使用了ActionNameAttribute [ActionName("ById")] public Model Get(PoByIdQuery model) { return repo.Get(model); } [ActionName("ByPoNumbe
- api/控制器?ponumber=###
- 控制器?id=####(或api/控制器/####)
[ActionName("ById")]
public Model Get(PoByIdQuery model)
{
return repo.Get(model);
}
[ActionName("ByPoNumber")]
public Model Get(PoByNumberQuery model)
{
return repo.Get(model);
}
这会将URL更改为
- /控制器/byponumber?ponumber=###
- /控制器/字节ID/###
现在的问题是,当我检索到值时,它表示没有可用于text/html类型的格式化程序。如何配置mvc4/webapi以使用json格式化程序处理文本/html请求?或者,如何更改呼叫请求以请求json而不是html?已解决 首先,我需要添加路由。默认情况下,webapi忽略该操作。所以我创建了一个包含动作的路由
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{id}/{action}",
defaults: new { action = "ById", id = RouteParameter.Optional });
下一个问题是action的论点。根据。复杂类型取自主体,简单类型取自查询字符串。我可以使用[FromUri]
覆盖此行为,并从查询字符串中提取采购订单号
有一个副作用,我现在可以处理。我必须为{id}
提供一个参数。所以我的URL看起来像这样
- /api/controller/u2;/bynumber?ponumber=###