带有附加参数的WebApi POST



我正在使用WebAPI2 . net 5创建一个控制器,将记录插入到我们的数据库中。

我想知道是否有可能传递额外的参数到HttpPOST方法?我特别想传递一个布尔值以及有效负载对象,以操纵对象在数据库中持久化的方式(我们有两个不同的数据库,一个用于培训,另一个用于生产)

MSDN定义POST方法签名如下:

[HttpPost]
public ActionResult<Pet> Create([FromBody]Pet pet)
{
.....
}

为此,我尝试创建具有以下签名的端点:

[HttpPost("CreatePet/{training:bool}")]
public ActionResult<Pet> Create(bool training, [FromBody]Pet pet)
{
// do some if(training) logic here...
.....
}

我的想法是请求URL将变成

baseAddress + "/CreatePet/{training}"
e.g.
http://localhost:500/api/CreatePet/true

现在,使用HttpClient的PostAsync方法像上面那样调用端点会产生404 not found错误。

是否有解决方案?

更改操作头:

[Route("~/api/CreatePet/{training:bool}")]
public ActionResult<Pet> Create(bool training, [FromBody]Pet pet)
{
// do some if(training) logic here...
.....
}

最新更新