2012-08-14 24 views
1

我看過的所有WebAPI示例演示瞭如何使用控制器進行基本的CRUD設置。例如下面的控制顯示在我的申請campaigns控制器:WebAPI控制器中的URL比基本的CRUD更復雜

public IEnumerable<CampaignModel> Get() 
{ 
    return _campaignService.GetAll(); 
} 

public CampaignModel Get(int id) 
{ 
    return _campaignService.GetByID(id); 
} 

public void Post(CampaignModel campaign) 
{ 
    _campaignService.Create(campaign); 
} 

public void Put(CampaignModel campaign) 
{ 
    _campaignService.Update(campaign); 
} 

public void Delete(int id) 
{ 
    _campaignService.Delete(id); 
} 

這一切都很好,我結束了在下列格式提出了一些很好的端點:

  • GET活動/
  • GET運動/(編號)
  • POST運動/ {}運動
  • PUT活動/ {}運動
  • 個刪除廣告/(編號)

不過,我現在想進一步擴展API,並添加以下端點:

  • POST運動/發送
  • POST運動/時間表/ {日期}

是否有可能將這些作爲上述CRUD操作的同一控制器的一部分?或者是否必須添加其他控制器,然後爲每個端點設置路由?

回答

3

退房超過here

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

public class CampaignsController : ApiController 
{ 
    [HttpPost] 
    public void send(); 

    [HttpPost] 
    public void schedule(DateDto date); 
} 

「路由的動作名稱」將映射到「API /運動/發送」和「API /運動/時間表」

+0

甜作爲螺母伴侶 - 正是我想 – jcvandan 2012-08-14 10:27:27

+0

這一切都歸結到RPC與REST的討論 – 2012-08-14 11:49:55