C#API HTTP动态参数



嘿,我想用动态参数来实现这一点。

例如,我有这个控制器操作:

[HttpGet]
public async Task TestParam(string firtname, string lastname, string persnr)
{
Console.WriteLine("Firstname: " + firtname);
Console.WriteLine("Lastname: " + lastname);
Console.WriteLine("Persnr: " + persnr);
}        

我的请求可能是这样的吗:

姓氏测试
Url名字Persnr
URL/?firtname=Test&lastname=Test&persnr=123测试
URL/?firtname=Test&persnr=123测试
URL/?lastname=Test&persnr=123
URL/?persnr=123

您可以为查询参数创建一个模型类,如下所示:

public class TestQuery
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Persnr { get; set; }
}

然后你可以像这样替换你的TestParam签名:

public async Task TestParam([FromUri]TestQuery queryParams)

有关更多信息,请查看MSDN的这篇文章。

Peter Csala的答案有效,但我会有第二个解决方案。

[HttpGet("{uri}")]
public async Task<string> TestParam(string uri)
{
Uri myUri = new Uri("http://localhost:2000/?" + uri);
string firstname = HttpUtility.ParseQueryString(myUri.Query).Get("firstname");
string lastname = HttpUtility.ParseQueryString(myUri.Query).Get("lastname");
string persnr = HttpUtility.ParseQueryString(myUri.Query).Get("persnr");
Console.WriteLine("Firstname: " + firtname);
Console.WriteLine("Lastname: " + lastname);
Console.WriteLine("Persnr: " + persnr);
}

这将读取您在uri中写入的所有参数。例如,没有在uri中设置lastname,它将为空。

HttpUtility.ParseQueryString

最新更新