C# Web api解析FromQuery参数名称
我有严格的API路由要求。这必须是Get请求,并且无法更改路由。用户可以按姓名搜索人员,但也可以按姓名的一部分搜索: api/People?name=Tom-“Tom”可以位于名称的任何部分,忽略大小写 api/People?name:contains=Tom-“Tom”必须位于名称的开头,忽略大小写 api/People?name:exact=Tom-“Tom”必须区分大小写 它应该如何在控制器中实现 有一个带有3个参数的选项,可以改进吗C# Web api解析FromQuery参数名称,c#,rest,asp.net-core,asp.net-web-api,.net-core,C#,Rest,Asp.net Core,Asp.net Web Api,.net Core,我有严格的API路由要求。这必须是Get请求,并且无法更改路由。用户可以按姓名搜索人员,但也可以按姓名的一部分搜索: api/People?name=Tom-“Tom”可以位于名称的任何部分,忽略大小写 api/People?name:contains=Tom-“Tom”必须位于名称的开头,忽略大小写 api/People?name:exact=Tom-“Tom”必须区分大小写 它应该如何在控制器中实现 有一个带有3个参数的选项,可以改进吗 public async Task<IA
public async Task<IActionResult> GetByName(
[FromQuery(Name = "name")] string name,
[FromQuery(Name = "name:contains")] string beginName,
[FromQuery(Name = "name:exact")] string exactName)
公共异步任务GetByName(
[FromQuery(Name=“Name”)]字符串名称,
[FromQuery(Name=“Name:contains”)]字符串beginName,
[FromQuery(Name=“Name:exact”)]字符串exactName)
您可以使用自定义模型绑定,下面是一个演示:
名称模型:
public class NameModel {
public string name { get; set; }
public string beginName { get; set; }
public string exactName { get; set; }
}
控制器:
[Route("/GetByName")]
public async Task<IActionResult> GetByName([ModelBinder(typeof(NameBinder))]NameModel nameModel)
{
return Ok();
}
结果:
您可以使用自定义模型绑定,下面是一个演示: 名称模型:
public class NameModel {
public string name { get; set; }
public string beginName { get; set; }
public string exactName { get; set; }
}
控制器:
[Route("/GetByName")]
public async Task<IActionResult> GetByName([ModelBinder(typeof(NameBinder))]NameModel nameModel)
{
return Ok();
}
结果:
我可以建议“公共HttpResponseMessage Post([FromBody]FormDataCollection formbody)”吗。查看此链接了解详细信息谢谢,不幸的是,这必须是一个get请求,解决方案不适合我。我更正了描述。我将使用两个参数,如
name
和operator
。我是否可以建议使用“public HttpResponseMessage Post([FromBody]FormDataCollection formbody)”。查看此链接了解详细信息谢谢,不幸的是,这必须是一个get请求,解决方案不适合我。我更正了描述。我将使用两个参数,如name
和operator
。