C# 使用FluentHttpClient请求WebApi

写在前面

FluentHttpClient 是一个REST API 异步调用 HTTP 客户端,调用过程非常便捷,采用流式编程,可以将所有请求所需的参数一次性发送,并直接获取序列化后的结果。

老规矩从NuGet上安装该类库:

这边一定要认准是 Pathoschild 这家,千万不要下错,因为有类似关键词的类库。

代码实现


using Pathoschild.Http.Client;
using System;

class Program
{
    static async Task Main(string[] args)
    {
        var client = new FluentClient("http://localhost:5000/");
        var items = await client.GetAsync("WeatherForecast")
            .WithHeader("User-Agent", "Tester")
            .WithArguments(new { page = 1, page_size = 10, target = "Day" })
            .As<List<WeatherForecast>>();
        //var items = await client.PostAsync("WeatherForecast").As<List<WeatherForecast>>();
        foreach (var item in items)
        {
            await Console.Out.WriteLineAsync($"Date: {item.Date.ToShortDateString()}, Summary: {item.Summary}");
        }

        Console.ReadLine();
    }

    public class WeatherForecast
    {
        public DateOnly Date { get; set; }

        public int TemperatureC { get; set; }

        public int TemperatureF { get; set; }

        public string? Summary { get; set; }
    }
}

WebApi这边直接使用了官方的.NetCore WebApi模板项目,运行框架是.Net8.0,现在已经集成了Swagger,超级赞的,运行起来可以直接看到这样的界面。

对应的控制器代码如下:

    [ApiController]
    [Route("[controller]")]
    public class WeatherForecastController : ControllerBase
    {
        private static readonly string[] Summaries = new[]
        {
            "Freezing", "Bracing", "Chilly", "Cool", "Mild", "Warm", "Balmy", "Hot", "Sweltering", "Scorching"
        };

        private readonly ILogger<WeatherForecastController> _logger;

        public WeatherForecastController(ILogger<WeatherForecastController> logger)
        {
            _logger = logger;
        }

        [HttpGet(Name = "GetWeatherForecast")]
        [HttpPost(Name = "GetWeatherForecast")]
        public IEnumerable<WeatherForecast> Get()
        {
            return Enumerable.Range(1, 5).Select(index => new WeatherForecast
            {
                Date = DateOnly.FromDateTime(DateTime.Now.AddDays(index)),
                TemperatureC = Random.Shared.Next(-20, 55),
                Summary = Summaries[Random.Shared.Next(Summaries.Length)]
            })
            .ToArray();
        }
    }

运行起来:

 

调用结果

 

相关推荐

  1. C#系列-C#访问WebAPI(11)

    2023-12-19 17:10:02       31 阅读
  2. asp.net core webapi AutoMapper使用

    2023-12-19 17:10:02       37 阅读

最近更新

  1. TCP协议是安全的吗?

    2023-12-19 17:10:02       16 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2023-12-19 17:10:02       16 阅读
  3. 【Python教程】压缩PDF文件大小

    2023-12-19 17:10:02       15 阅读
  4. 通过文章id递归查询所有评论(xml)

    2023-12-19 17:10:02       18 阅读

热门阅读

  1. MVC环境搭建

    2023-12-19 17:10:02       35 阅读
  2. 开源许可证保姆级入门手册

    2023-12-19 17:10:02       39 阅读
  3. Python编程语言简介

    2023-12-19 17:10:02       40 阅读
  4. cc攻击之随机参数脚本

    2023-12-19 17:10:02       41 阅读
  5. 你会处理 go 中的 nil 吗

    2023-12-19 17:10:02       33 阅读
  6. 高德map点标记随zoom缩放位置不变

    2023-12-19 17:10:02       40 阅读
  7. Linux 硬链接和软链接

    2023-12-19 17:10:02       44 阅读
  8. 【Spring】Spring AOP

    2023-12-19 17:10:02       30 阅读
  9. 计时器plus

    2023-12-19 17:10:02       43 阅读
  10. el-table表格中数据过长如何使用省略号

    2023-12-19 17:10:02       46 阅读