Web API GET,它接受可为同一命名参数提供多个值的可选参数

时间:2017-11-14 19:57:50

标签: c# api get optional-parameters

我需要开发一个新的Web API GET,它将包含多个可选参数以及两个不可选的参数。可选参数可以具有相同名称的多个值。例如,以下参数可以在一次api调用的同时具有多个值: State,PaymentType,PaymentSource。

非可选参数是FromDate和ToDate。

将从前端UI列表框中的用户选择值填充可选参数。因此,例如,州列表框将所有状态列为可选选项。因此,如果用户选择10个状态,则API的可选State参数需要包含所有10个状态作为该参数的值。对于其他可选参数也是如此。

我之前从未这样做过,所以我不确定如何做到这一点。我遇到的所有API只对每个参数都有一个值。如何以这种方式创建API的这些参数?它们应该是一个清单吗?

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题

[Route("api/foo/{State}/{PaymentType}/{PaymentSource}/{FromDate?}/{ToDate?}")]
public IHttpActionResult Get([FromUri] List<string> State, [FromUri] List<string> PaymentType, [FromUri] List<string> PaymentSource, [FromUri] List<string> FromDate = null, [FromUri] List<string> ToDate = null)
{ ... }

查询字符串参数应为此格式

~/api/foo?State[]=value1&State[]=value2&PaymentType[]=...