Refit使用入门

简介: 本文介绍了如何使用Refit库在.NET Core项目中实现RESTful API的调用。通过创建`IGitHubApi`接口定义API方法,并在`Program.cs`中配置Refit客户端,最后在`WeatherForecastController`中演示了两种调用API的方式,展示了Refit的便捷性和类型安全性。

前言

原文:Refit: The automatic type-safe REST library for .NET Core, Xamarin and .NET

百度翻译:Refit:适用于.NET Core、Xamarin和.NET的自动类型安全REST库

官方网站:https://github.com/reactiveui/refit

新建weapi项目并添加包Refit与Refit.HttpClientFactory

新建接口IGitHubApi.cs

using Refit;

namespace RefitDemo
{
    public interface IGitHubApi
    {
        [Get("/WeatherForecast")]
        Task<IEnumerable<WeatherForecast>> GetWeatherForecastList();
    }
}

修改Program.cs

builder.Services
    .AddRefitClient<IGitHubApi>()
    .ConfigureHttpClient(c => c.BaseAddress = new Uri("https://localhost:7159"));

这里的7159改成你的项目端口

修改WeatherForecastController.cs

using Microsoft.AspNetCore.Mvc;
using Refit;

namespace RefitDemo.Controllers
{
    [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;
        private readonly IGitHubApi _gitHubApi;
        public WeatherForecastController(ILogger<WeatherForecastController> logger, IGitHubApi gitHubApi)
        {
            _logger = logger;
            _gitHubApi = gitHubApi;
        }

        [HttpGet(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();
        }

        [HttpPost(Name = "GetTest")]
        public async Task<IEnumerable<WeatherForecast>> GetTestAsync()
        {
            return await _gitHubApi.GetWeatherForecastList();
        }

        [HttpPost("GetTest1")]
        public async Task<IEnumerable<WeatherForecast>> GetTest1Async()
        {
            var gitHubApi = RestService.For<IGitHubApi>("https://localhost:7159");
            return await gitHubApi.GetWeatherForecastList();
        }
    }
}

这里代码就是这两种调用方式

        [HttpPost(Name = "GetTest")]
        public async Task<IEnumerable<WeatherForecast>> GetTestAsync()
        {
            return await _gitHubApi.GetWeatherForecastList();
        }

        [HttpPost("GetTest1")]
        public async Task<IEnumerable<WeatherForecast>> GetTest1Async()
        {
            var gitHubApi = RestService.For<IGitHubApi>("https://localhost:7159");
            return await gitHubApi.GetWeatherForecastList();
        }

后面两个api就是Refit的调用结果

作者

吴晓阳(手机:13736969112微信同号)

目录
相关文章
|
3月前
|
消息中间件 缓存 小程序
婚恋交友相亲公众号app小程序系统源码「脱单神器」婚恋平台全套代码 - 支持快速二次开发
这是一套基于SpringBoot + Vue3开发的婚恋交友系统,支持微信公众号、Uniapp小程序和APP端。系统包含实名认证、智能匹配、视频相亲、会员体系等功能,适用于婚恋社交平台和相亲交友应用。后端采用SpringBoot 3.x与MyBatis-Plus,前端使用Vue3与Uniapp,支持快速部署和二次开发。适合技术团队或有经验的个人创业者使用。
250 8
|
JSON 安全 API
技术经验解读:使用Refit框架访问REST接口
技术经验解读:使用Refit框架访问REST接口
258 0
|
6月前
|
存储 NoSQL 定位技术
MongoDB索引知识
MongoDB索引是提升查询性能的关键工具,通过构建特殊的数据结构(如B树)优化数据访问路径。无索引时,查询需全集合扫描,时间复杂度为O(n);使用索引后可降至O(log n),实现毫秒级响应。MongoDB支持多种索引类型:单字段索引适用于高频单字段查询;复合索引基于最左前缀原则优化多条件过滤和排序;专业索引包括地理空间索引(支持LBS服务)、文本索引(全文搜索)和哈希索引(分片键优化)。合理选择和优化索引类型,可显著提升数据库性能。建议使用explain()分析查询计划,并定期清理冗余索引。
|
资源调度 JavaScript
Pinia的数据持久化
Pinia的数据持久化
|
11月前
ThreeJs模拟工厂生产过程一
这篇文章详细介绍了如何使用Three.js模拟工厂生产过程的第一部分,包括创建传送带、生产设备和产品的模型,并实现产品沿传送带移动的动画效果。
377 5
|
安全 Linux 网络安全
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
【工具使用】几款优秀的SSH连接客户端软件工具推荐FinalShell、Xshell、MobaXterm、OpenSSH、PUTTY、Terminus、mRemoteNG、Terminals等
117214 0
|
Kubernetes 数据中心 网络架构
在k8S中,flannel和calico的作用和区别是什么?
在k8S中,flannel和calico的作用和区别是什么?
|
消息中间件 负载均衡 Kafka
Kafka学习---消费者(分区消费、分区平衡策略、offset、漏消费和重复消费)
Kafka学习---消费者(分区消费、分区平衡策略、offset、漏消费和重复消费)
2347 2
|
JavaScript 前端开发
【vue】 网站动态背景 | vanta.js的使用
【vue】 网站动态背景 | vanta.js的使用
954 0
|
数据可视化 数据挖掘
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码1
R语言广义线性混合模型GLMMs在生态学中应用可视化2实例合集|附数据代码