2012-08-13 92 views
0

使用webapi默認值我可以發送和接收JSON數據。我現在遇到的情況,我的API控制器可以獲得動作之間webapi mediatypeformatter text/html

  • API /控制器?採購單號碼= ###
  • 控制器?ID = ###(或API /控制器/ ###)
  • 分不清

解決這個我用ActionNameAttribute

[ActionName("ById")] 
public Model Get(PoByIdQuery model) 
{ 
    return repo.Get(model); 
} 

[ActionName("ByPoNumber")] 
public Model Get(PoByNumberQuery model) 
{ 
    return repo.Get(model); 
} 

這改變了URL來

  • /CONTROLER/byponumber?採購單號碼= ###
  • /CONTROLER/byid/###

現在的問題是,當我找回它說沒有格式化可用的類型文本值/ HTML 。我如何配置mvc4/webapi使用json格式化程序的文本/ html請求?或者,我可以如何更改我的調用請求來請求json而不是html?

回答

0

解決

首先,我需要添加路由。默認情況下,webapi會忽略該操作。所以我創建了一條路線,其中包括行動

routes.MapHttpRoute(
    name: "ActionApi", 
    routeTemplate: "api/{controller}/{id}/{action}", 
    defaults: new { action = "ById", id = RouteParameter.Optional }); 

下一個問題是行動的論點。根據this post。從身體中獲取複雜類型,並從查詢字符串中提取簡單類型。我可以使用[FromUri]覆蓋此行爲並從查詢字符串中提取po編號。

有一個方面的影響,我現在可以處理。我必須提供{id}的參數。所以我的網址看起來像這樣

  • /API /控制器/ _/bynumber?採購單號碼= ###
相關問題