ASP.NET Core:匹配路线,一条带主体,一条不带主体

时间:2018-10-18 15:16:50

标签: c# asp.net-core asp.net-core-webapi

我有一条DELETE路线,如下所示:

[HttpDelete("{id}")]
public async Task<StatusCodeResult> DeleteService(string id)
{
    return await _repo.DeleteServiceAsync(id);
}

我还需要在此路由上支持一个[FromBody]参数,如下所示:

[HttpDelete("{id}")]
public async Task<StatusCodeResult> DeleteService([FromBody] ServiceEntity service, string id)
{
    if(service == null)
        return await _repo.DeleteServiceAsync(id);
    else
        return await _repo.DeleteServiceWithEntityAsync(id, service);
}

但是,由于AllowEmptyInputInBodyModelBinding,这不起作用,我不想将其设置为true;在所有其他路由/端点中,都希望使用默认行为AllowEmptyInputInBodyModelBinding == false

我可以有两条不同的路线,一条带有body参数,一条没有,但是会产生匹配的路线,而且没有命中任何端点:

[HttpDelete("{id}")]
public async Task<StatusCodeResult> DeleteService(string id)
{
    return await _repo.DeleteServiceAsync(id);
}

[HttpDelete("{id}")]
public async Task<StatusCodeResult> DeleteServiceWithEntity([FromBody] ServiceEntity service, string id)
{
    return await _repo.DeleteServiceWithEntityAsync(id, service);
}

获得我想要的行为的最佳方法是什么?我无法添加单独的终结点,因为我需要遵守现有API的规范。

0 个答案:

没有答案