我试图简化我的应用程序的路由。我试图找到改变这一点的方法:
[Route("api/campaign/{campaignId}/launch")]
public HttpResponseMessage LaunchCampaign(long campaignId, CampaignLaunchRequest request)
{
//do job
}
像这样:
[Route("api/campaign/{request.Id}/launch")]
public HttpResponseMessage LaunchCampaign(CampaignLaunchRequest request)
{
//do job
}
我可以以某种方式将路径变量推送到某个类的请求正文中吗?
[Route("api/campaign/{request.Id}/launch")]
"请求"是类CampaignLaunchRequest
,id
是此类的字段/属性
甚至可能吗?
我有一个类似的用例,并且能够通过使用自定义模型绑定器"ModelBinder"属性类来实现这一点。
例如,在您的情况下:
[Route("api/campaign/{campaignId}/launch")]
public HttpResponseMessage LaunchCampaign([ModelBinder(typeof(MyCustomModelBinder))]
CampaignLaunchRequest request)
{
//do job
}
要创建ModelBinder,您可以查看此页面,但基本上您将解析请求并在"MyCustomModelBinder"中创建自己的"CampaignLaunchRequest"对象,该对象将在每次调用方法时运行。