通过Web API传递动态的where子句

时间:2018-08-20 09:34:15

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

我目前正在创建一个将与Angular前端进行交互的.NET Core Web API。要求Web API能够基于动态构建的where语句返回数据。例如,我有一个具有以下模型的对象

{
    "accountCode": "ABC123",
    "addressLine1": "AddressLine1",
    "addressLine2": "AddressLine2",
    "addressLine3": "AddressLine3",
    "addressLine4": null,
    "addressLine5": null,
    "businessUnitName": "",
    "companyRegistrationNumber": null,
    "name": "My supplier",
    "postcode": "BA112RP",
    "supplierId": 3,
    "vatRegistrationNumber": null
}

现在,不是让我的控制器方法设置有12个不同的参数,而是每当我添加新属性时都需要添加一个额外的参数,有没有办法让我拥有一个动态参数(KeyValuePair类型安排)?

1 个答案:

答案 0 :(得分:1)

您的asp.net核心Web API能够将输入隐式转换为任何给定的对象,例如:

[Route("api/[controller]")]
[ApiController]
public class HomeController : ControllerBase
{
    public IActionResult PostObject([FromBody] MyObject obj)
    {
        // Your Code goes here
    }
}

默认情况下,此格式为JSON格式,但您也可以使用FormData等其他格式。

也不能是具有定义属性的对象。您也可以使用简单的KeyValuePair。看看Parameter Binding in ASP.NET Web API,您可以找到有关如何最好地解决问题的其他建议。