首页后端开发ASP.NETwebApi怎么调用

webApi怎么调用

时间2024-01-31 06:55:03发布访客分类ASP.NET浏览595
导读:收集整理的这篇文章主要介绍了webApi怎么调用,觉得挺不错的,现在分享给大家,也给大家做个参考。webapi怎么调用?如何使用程序调用webApi接口?在C#中,传统调用HTTP接口一般有两种办法:1.Webrequest/WebResp...
收集整理的这篇文章主要介绍了webApi怎么调用,觉得挺不错的,现在分享给大家,也给大家做个参考。

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 Taskbool>
 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 TaskPerson>
 GetPerson(HttpClient client)       {
               //向Person发送GET请求           return await await client.GetAsync("api/Person/1")            //获取返回Body,并根据返回的Content-type自动匹配格式化器反序列化Body内容为对象                                    .ContinueWith(x =>
     x.Result.Content.ReadAsAsyncPerson>
    (                                                new ListmediaTypeFormatter>
() {
new JsonMediaTypeFormatter()/*这是Json的格式化器*/                                                   ,new XMlMediaTypeFormatter()/*这是XML的格式化器*/}
    ));
       }
                  //put       static async Taskbool>
 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 Taskbool>
 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怎么调用的详细内容,更多请关注其它相关文章!

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!

上一篇: asp.net怎么使用js文件下一篇:c语言eps是什么意思猜你在找的ASP.NET相关文章 C# 一些面试试题的实例教程2022-05-16.NET 6开发TodoList应用之请求日志组件HttpLogging介绍2022-04-16.NET 6中间件Http Logging使用介绍2022-04-16gojs一些实用的高级用法2022-04-16.NET6开发TodoList应用之实现查询排序2022-04-16.NET6开发TodoList应用之实现数据塑形2022-04-16.NET微服务架构CI/CD自动打包镜像2022-04-16Asp.Net Core 使用Monaco Editor 实现代码编辑器功能2022-04-16.NET微服务架构CI/CD自动构建Jenkins+Gitee2022-04-16.Net Core微服务网关Ocelot集成Consul2022-04-16 其他相关热搜词更多phpjavapython程序员loadpost-format-gallery

若转载请注明出处: webApi怎么调用
本文地址: https://pptw.com/jishu/593627.html
c语言eps是什么意思 聊聊jQuery中的Ajax,详解其主要方法

游客 回复需填写必要信息