.NET6 MiniAPI的Refit如何改写为支持长尾词查询的API框架?

2026-03-30 14:571阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计488个文字,预计阅读时间需要2分钟。

.NET6 MiniAPI的Refit如何改写为支持长尾词查询的API框架?

本篇与上篇HttpClient相关,前篇中,我们直接使用HttpClient来发起请求,所有请求信息都需要我们根据需求自行填充。那么Refit是什么呢?它是一个让调用API就像调用本地方法一样简单的工具。

.NET6 MiniAPI的Refit如何改写为支持长尾词查询的API框架?

  本篇是与上篇HttpClient有关联的,有前篇中,我们是直接使用HttpClient来发出请求的,所有的请求信息都是我们根据需要自己来填充的。那Refit是什么呢?它是一个让我们调用API就像调用一个对象的方法一样简单,是通过把localhost:5026"));

var app = builder.Build();

#region 调用者
app.MapGet("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 get user");
var user = await userAPI.GetUser("gsw");
user.Name += "丰";
return user;
});
app.MapPost("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 add user");
var user = new User { UserName = "ls", Name = "李四", Password = "EDCBA", CreateTime = DateTime.Now };
var newUser = await userAPI.AddUser(user);
return newUser;
});
app.MapPut("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 modify user");
var user = new User { ID = 2, UserName = "ls", Name = "李四收", Password = "AAAAA" };
return await userAPI.ModifyUser(user);
});
app.MapDelete("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 remove user");
return await userAPI.RemoveUser(2);
});
#endregion
app.Run();

/// <summary>
/// 定义Refit接口
/// </summary>
public interface IUserAPI
{
[Get("/users/{username}")]
Task<User> GetUser(string userName);
[Post("/user")]
Task<User> AddUser(User user);
[Put("/user")]
Task<User> ModifyUser(User user);
[Delete("/user/{id}")]
Task<bool> RemoveUser(int id);
}

  其实HttpClient调用API是个大知识点,很多API不可能这么简单,Refit也提供了一些复杂的配置接口方式,详见github.com/reactiveui/refit,;因为场景很多,大家可以按文档找适合自己的配置,但Refit也不是万能的,只是把常用的场景作了适配,所以择优而用,不必纠结大而完美的解决方案,毕竟它是一个库而已。

  想要更快更方便的了解相关知识,可以关注微信公众号

本文共计488个文字,预计阅读时间需要2分钟。

.NET6 MiniAPI的Refit如何改写为支持长尾词查询的API框架?

本篇与上篇HttpClient相关,前篇中,我们直接使用HttpClient来发起请求,所有请求信息都需要我们根据需求自行填充。那么Refit是什么呢?它是一个让调用API就像调用本地方法一样简单的工具。

.NET6 MiniAPI的Refit如何改写为支持长尾词查询的API框架?

  本篇是与上篇HttpClient有关联的,有前篇中,我们是直接使用HttpClient来发出请求的,所有的请求信息都是我们根据需要自己来填充的。那Refit是什么呢?它是一个让我们调用API就像调用一个对象的方法一样简单,是通过把localhost:5026"));

var app = builder.Build();

#region 调用者
app.MapGet("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 get user");
var user = await userAPI.GetUser("gsw");
user.Name += "丰";
return user;
});
app.MapPost("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 add user");
var user = new User { UserName = "ls", Name = "李四", Password = "EDCBA", CreateTime = DateTime.Now };
var newUser = await userAPI.AddUser(user);
return newUser;
});
app.MapPut("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 modify user");
var user = new User { ID = 2, UserName = "ls", Name = "李四收", Password = "AAAAA" };
return await userAPI.ModifyUser(user);
});
app.MapDelete("/user", async (ILogger<Program> Logger, IUserAPI userAPI) =>
{
Logger.LogInformation("调用者 remove user");
return await userAPI.RemoveUser(2);
});
#endregion
app.Run();

/// <summary>
/// 定义Refit接口
/// </summary>
public interface IUserAPI
{
[Get("/users/{username}")]
Task<User> GetUser(string userName);
[Post("/user")]
Task<User> AddUser(User user);
[Put("/user")]
Task<User> ModifyUser(User user);
[Delete("/user/{id}")]
Task<bool> RemoveUser(int id);
}

  其实HttpClient调用API是个大知识点,很多API不可能这么简单,Refit也提供了一些复杂的配置接口方式,详见github.com/reactiveui/refit,;因为场景很多,大家可以按文档找适合自己的配置,但Refit也不是万能的,只是把常用的场景作了适配,所以择优而用,不必纠结大而完美的解决方案,毕竟它是一个库而已。

  想要更快更方便的了解相关知识,可以关注微信公众号