我正在创建一个与Web API一起使用的演示移动应用程序。我关注这个网站:
这就是我调用Web API的方式:
class Program
{
static void Main(string[] args)
{
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost:9000/");
// Add an Accept header for JSON format.
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
}
}
这就是API函数的调用方式:
HttpResponseMessage response = client.GetAsync("api/products").Result; // Blocking call!
if (response.IsSuccessStatusCode)
{
// Parse the response body. Blocking!
var products = response.Content.ReadAsAsync<IEnumerable<Product>>().Result;
foreach (var p in products)
{
Console.WriteLine("{0}\t{1};\t{2}", p.Name, p.Price, p.Category);
}
}
else
{
Console.WriteLine("{0} ({1})", (int)response.StatusCode, response.ReasonPhrase);
}
我不明白这一行:
HttpResponseMessage response = client.GetAsync("api/products").Result;
使用api/products
地址时的注意事项是什么? API的模型,控制器类还是其他任何东西?
答案 0 :(得分:0)
您的问题的答案位于您引用的第一页:
要获取所有产品的列表,请将此方法添加到ProductsController类:
public class ProductsController : ApiController { public IEnumerable<Product> GetAllProducts() { return repository.GetAll(); } // .... }
方法名称以“Get”开头,因此按照惯例,它映射到GET请求。此外,因为该方法没有参数,所以它映射到路径中不包含“id”段的URI。
所以,致电
HttpResponseMessage response = client.GetAsync("api/products").Result;
将调用products
控制器的以Get
开头并且没有参数的函数。
如果您不熟悉控制器,可以在ASP.NET MVC Overview上了解有关MVC模式的更多信息。
答案 1 :(得分:0)
HttpResponseMessage response = client.GetAsync("api/products").Result
表示向作为API控制器的Product控制器发送请求。产品控制器处理您的请求后,将其结果存储在HttpResponseMessage的实例中。
如果你设置一个断点,你会看到该响应包含一个产品列表(我假设这是产品控制器所做的)。