1

私が見た WebAPI のすべての例は、コントローラーを使用して基本的な CRUD をセットアップする方法を示しています。たとえば、以下のコントローラーはcampaigns、私のアプリケーションのコントローラーを示しています。

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 キャンペーン/{id}
  • POST キャンペーン/{キャンペーン}
  • PUT キャンペーン/{キャンペーン}
  • DELETE キャンペーン/{id}

ただし、API をさらに拡張して、次のエンドポイントを追加したいと考えています。

  • キャンペーンの投稿/送信
  • POST キャンペーン/スケジュール/{日付}

これらを上記の CRUD アクションと同じコントローラーの一部として持つことは可能ですか? または、他のコントローラーを追加して、これらのエンドポイントごとにルートを設定する必要がありますか?

4

1 に答える 1

3

ここで「アクション名によるルーティング」をチェックしてください

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/campaigns/send」と「api/campaigns/schedule」にマッピングされます</p>

于 2012-08-14T09:45:30.063 に答える