>백엔드 개발 >C#.Net 튜토리얼 >webApi를 호출하는 방법

webApi를 호출하는 방법

藏色散人
藏色散人원래의
2019-05-31 16:16:188034검색

webApi를 호출하는 방법

webapi를 어떻게 호출하나요? 프로그램을 사용하여 webApi 인터페이스를 호출하는 방법은 무엇입니까?

C#에서는 일반적으로 HTTP 인터페이스를 호출하는 두 가지 방법이 있습니다.

1. WebRequest/WebResponse 결합 메서드 호출

2.

첫 번째 방법은 덜 추상적이고 사용하기가 더 번거롭습니다. WebClient는 주로 웹 웹 페이지 시나리오를 지향하지만 웹 작업을 시뮬레이션할 때 사용하는 것이 더 편리하지만 웹을 사용할 때는 더 번거롭습니다. 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에 대한 몇 가지 도움말 확장을 제공합니다.

이 예제를 모두와 함께 작성하겠습니다.

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는 완전 비동기 방식을 사용하며 확장성이 좋습니다.

자, 지금까지 간단한 Restful API 및 C# 호출 클라이언트 세트가 완성되었지만 이는 시작에 불과합니다. Web API는 매우 강력한 프레임워크이며 해당 확장 포인트는 매우 풍부합니다. 많은 도움을 제공합니다.

위 내용은 webApi를 호출하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.