带有参数的ASP.NET Web Api HttpClient.GetAsync

Nul*_*nce 8 c# asp.net rest web-services asp.net-web-api

我有以下Web Api方法签名

public HttpResponseMessage GetGroups(MyRequest myRequest)
Run Code Online (Sandbox Code Playgroud)

在客户端中,如何将MyRequest传递给调用方法?

目前,我有这样的事情

                var request = new MyRequest()
                    {
                        RequestId = Guid.NewGuid().ToString()
                    };

                var response = client.GetAsync("api/groups").Result;
Run Code Online (Sandbox Code Playgroud)

我该如何传递requestGetAsync

如果这是一种POST方法,我可以做这样的事情

var response = client.PostAsJsonAsync("api/groups", request).Result;
Run Code Online (Sandbox Code Playgroud)

Bad*_*dri 13

您无法为HTTP GET请求发送邮件正文,因此您无法使用相同的邮件正文HttpClient.但是,您可以使用请求消息中的URI路径和查询字符串来传递数据.例如,您可以像这样使用URI api/groups/12345?firstname=bill&lastname=Lloyd和参数类MyRequest.

public class MyRequest
{
    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

由于MyRequest是复杂类型,您必须像这样指定模型绑定.

public HttpResponseMessage GetGroups([FromUri]MyRequest myRequest)
Run Code Online (Sandbox Code Playgroud)

现在,该MyRequest参数将包含URI路径和查询字符串中的值.在这种情况下,Id将是12345,FirstName将是法案LastName并将成为劳埃德.