8

我有以下 Web Api 方法签名

public HttpResponseMessage GetGroups(MyRequest myRequest)

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

目前,我有这样的事情

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

                var response = client.GetAsync("api/groups").Result;

我怎样才能传递requestGetAsync

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

var response = client.PostAsJsonAsync("api/groups", request).Result;
4

1 回答 1

15

您不能为 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; }
}

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

public HttpResponseMessage GetGroups([FromUri]MyRequest myRequest)

现在,该MyRequest参数将包含来自 URI 路径和查询字符串的值。在这种情况下,Id将是 12345,FirstName将是 bill,LastName将是 Lloyd。

于 2013-09-19T07:00:33.253 回答