webapi怎样挪用?怎样运用顺序挪用webApi接口?
在C#中,传统挪用HTTP接口平常有两种要领:
1.WebRequest/WebResponse组合的要领挪用
2.WebClient类举行挪用。
第一种要领笼统水平较低,运用较为烦琐;而WebClient重要面向了WEB网页场景,在模仿Web操纵时运用较为轻易,但用在RestFul场景下却比较贫苦,在Web API宣布的同时,.NET供应了两个顺序集:System.Net.Http和System.Net.Http.Formatting。这两个顺序集中最中心的类是HttpClient。
在.NET4.5中带有这两个顺序集,而.NET4需要到Nuget里下载Microsoft.Net.Http和Microsoft.AspNet.WebApi.Client这两个包才运用这个类,更低的.NET版本就只能表示遗憾了只能用WebRequest/WebResponse或许WebClient来挪用这些API了。
在运用中,System.Net.Http这个顺序集供应了HttpClient类以及相干的HTTP挪用,而System.Net.Http.Formatting供应了一些针对HttpClient的协助扩大,更好地支撑了内容协商、Content建立等功能。
下面我就和人人一同写一下这个例子:
public class Person { public long Id { get; set; } public string Name { get; set; } public int Age { get; set; } public string Sex { get; set; } public override string ToString() { return $"Id={Id} Name={Name} Age={Age} Sex={Sex}"; } }
class Program { static void Main(string[] args) { var client = new HttpClient(); //基础的API URL client.BaseAddress = new Uri("http://localhost:22658/"); //默许愿望相应运用Json序列化(内容协商机制,我吸收json花样的数据) client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); //运转client吸收顺序 Run(client); Console.ReadLine(); } //client吸收处置惩罚(都是异步的处置惩罚) static async void Run(HttpClient client) { //post 要求插进去数据 var result = await AddPerson(client); Console.WriteLine($"增加效果:{result}"); //增加效果:true //get 猎取数据 var person = await GetPerson(client); //查询效果:Id=1 Name=test Age=10 Sex=F Console.WriteLine($"查询效果:{person}"); //put 更新数据 result = await PutPerson(client); //更新效果:true Console.WriteLine($"更新效果:{result}"); //delete 删除数据 result = await DeletePerson(client); //删除效果:true Console.WriteLine($"删除效果:{result}"); } //post static async Task<bool> AddPerson(HttpClient client) { //向Person发送POST要求,Body运用Json举行序列化 return await client.PostAsJsonAsync("api/Person", new Person() { Age = 10, Id = 1, Name = "test", Sex = "F" }) //返回要求是不是实行胜利,即HTTP Code是不是为2XX .ContinueWith(x => x.Result.IsSuccessStatusCode); } //get static async Task<Person> GetPerson(HttpClient client) { //向Person发送GET要求 return await await client.GetAsync("api/Person/1") //猎取返回Body,并依据返回的Content-Type自动婚配花样化器反序列化Body内容为对象 .ContinueWith(x => x.Result.Content.ReadAsAsync<Person>( new List<MediaTypeFormatter>() {new JsonMediaTypeFormatter()/*这是Json的花样化器*/ ,new XmlMediaTypeFormatter()/*这是XML的花样化器*/})); } //put static async Task<bool> PutPerson(HttpClient client) { //向Person发送PUT要求,Body运用Json举行序列化 return await client.PutAsJsonAsync("api/Person/1", new Person() { Age = 10, Id = 1, Name = "test1Change", Sex = "F" }) .ContinueWith(x => x.Result.IsSuccessStatusCode); //返回要求是不是实行胜利,即HTTP Code是不是为2XX } //delete static async Task<bool> DeletePerson(HttpClient client) { return await client.DeleteAsync("api/Person/1") //向Person发送DELETE要求 .ContinueWith(x => x.Result.IsSuccessStatusCode); //返回要求是不是实行胜利,即HTTP Code是不是为2XX } }
这就完成了这组API的挪用,是不是是异常简朴轻易?HTTPClient运用全异步的要领,而且他有优越的扩大性。
OK,到此为止一组简朴的Restful API和C#的挪用客户端就完成了,但这只是最先,Web API是一个很壮大的框架,他的扩大点异常丰富,这些扩大能为我们的开辟供应许多的协助。
以上就是webApi怎样挪用的细致内容,更多请关注ki4网别的相干文章!