从C#客户端的WebApi调用GetAll方法

本文关键字:调用 GetAll 方法 WebApi 客户端 | 更新日期: 2023-09-27 18:13:14

我在网上看了一些例子,找到了一个关于检索使用C#WEB API服务和C#控制台应用程序作为客户端的产品的教程。然而,教程在服务中定义了一个函数来获取所有产品。然而,它并没有告诉你如何从客户端调用它:

public IEnumerable<Product> GetAllProducts()
{
    ...
}

其他CRUD方法使用IHttpActionResult声明,所以我很困惑如何调用它

因此,在我的客户中,我盲目地试图进行以下操作,这显然是不正确的:

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://localhost:59888/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
    // HTTP GET ALL
    HttpResponseMessage response = await client.GetAsync("api/products");
    if (response.IsSuccessStatusCode)
    {
        List<Model.Product> products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>();
    }
}

这给了我一个语法错误。那么我该如何对它们进行编码呢?我需要更改服务器或客户端代码,还是同时更改两者?

对于单个产品,代码是并且这是有效的:

// HTTP GET Specific Product
response = await client.GetAsync("api/products/1");
if (response.IsSuccessStatusCode)
{
    Model.Product product = await response.Content.ReadAsAsync<Model.Product>();        
}

服务器为:

public IHttpActionResult GetProduct(int id)
{
    var product = repository.GetByID(id);
    if (product != null)
        return Ok(product);
    else
        return NotFound();     
}

从C#客户端的WebApi调用GetAll方法

List<Model.Product> products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>(); 

你在最后错过了一个结束>。正确:

var products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>>();