webApi怎么调用


当前第2页 返回上一页

下面我就和大家一起写一下这个例子:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

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}";

 

        }

 

    }

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

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怎么调用的详细内容!

返回前面的内容

相关阅读 >>

详细介绍c# 中 asp.net web api 的 roc

webapi 返回json格式的数据实例教程

asp.net中关于webapi与ajax进行跨域数据交互时cookies数据的传递

asp.net webapi中 filter的使用以及执行顺序(收藏)

怎么在webforms 下搭建webapi

编写一个webapi框架的开端

asp.net core中关于webapi几种版本控制对比详解(图)

webapi怎么调用

更多相关阅读请进入《webapi》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...