从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();
}
List<Model.Product> products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>();
你在最后错过了一个结束>
。正确:
var products = await.response.Content.ReadAsAsync<IEnumerable<Model.Product>>();