我正在寻找如下开发api方法
POST /晚餐/晚餐/应用
与POST / application相同(类似于POST请求here)
我定义了一条路线,以便/ dinner / dinnerId / application进入/ application
routes.MapHttpRoute(
name:"DinnerApplicationApi",
routeTemplate: "api/dinner/{dinnerId}/{controller}"
);
在我的ApplicationController(这是一个api控制器)
[ModelValidationFilter]
public HttpResponseMessage Post([FromBody]ApplicationApiModel application, int dinnerId)
{
//this will work when invoked from route /dinner/dinnerId/application and without ModelValidationFilter
application.dinnerId = dinnerId;
if (123456 == application.dinnerId)
return new HttpResponseMessage(HttpStatusCode.OK);
else
{
return new HttpResponseMessage(HttpStatusCode.BadRequest);
}
}
现在,在第一条路线的情况下,我应该从路线中的值设置dinnerId。但在第二种情况下,DinnerId将从身体开始。我如何在WebApi中实现这一目标?我正在设置如上所示的路线的DinnerId。但是当我放置ModelValidationFilter时,请求失败,因为dinnerId是ApplicationApiModel中的必填字段。
public class ApplicationApiModel
{
[Required]
public int DinnerId { get; set; }
[Required]
public AttendeeApiModel Attendee { get; set; }
public string Message { get; set; }
public string Password { get; set; }
}
所以基本上,我希望能够同时使用两个路由,并且我的ModelValidation条件也会通过。