微网站开发项目合作协议建设一个手机网站
web/
2025/9/29 15:05:58/
文章来源:
微网站开发项目合作协议,建设一个手机网站,vue.js合作做网站么,单页网站制作需要多少钱本篇是与上篇HttpClient有关联的#xff0c;有前篇中#xff0c;我们是直接使用HttpClient来发出请求的#xff0c;所有的请求信息都是我们根据需要自己来填充的。那Refit是什么呢#xff1f;它是一个让我们调用API就像调用一个对象的方法一样简单#xff0c;是通过把http… 本篇是与上篇HttpClient有关联的有前篇中我们是直接使用HttpClient来发出请求的所有的请求信息都是我们根据需要自己来填充的。那Refit是什么呢它是一个让我们调用API就像调用一个对象的方法一样简单是通过把http请求信息配置到一个接口由refit把这些信息转成一个标准的http请求然后再把请求回的结果转成标准的实体返回给我们所以我们更像在使用一个对象的方法。下面是一个getpostputdelete的极简事例。这里定义了一个内存集合来充当数据库User是实体类。#region 存储和实体类
/// summary
/// 假装数据库
/// /summary
public static class DB
{/// summary/// 假装数据表/// /summarypublic static ListUser users new ListUser() {new User{ID1,UserNamegsw,Name张三,PasswordABCDE,CreateTimeDateTime.Now}};
}
/// summary
/// 实体类
/// /summary
public class User
{public int ID { get; set; }public string UserName { get; set; }public string Password { get; set; }public string Name { get; set; }public DateTime CreateTime { get; set; }public DateTime ModifyTime { get; set; }
}
#endregion被调用的API如下对内存集合进行增删改查。#region 被调用API
app.MapGet(/users/{username}, (ILoggerProgram Logger, string userName)
{Logger.LogInformation(被调用 get user);return DB.users.SingleOrDefault(s s.UserName userName);
});app.MapPost(/user, (ILoggerProgram Logger, User user)
{Logger.LogInformation(被调用 add user);user.ID DB.users.Count 1;DB.users.Add(user);return user;
});
app.MapPut(/user, (ILoggerProgram Logger, User user)
{Logger.LogInformation(被调用 modify user);var oldUser DB.users.SingleOrDefault(s s.ID user.ID);if (oldUser ! null){oldUser.UserName user.UserName;oldUser.Password user.Password;oldUser.Name user.Name;oldUser.ModifyTime DateTime.Now;}return oldUser;
});
app.MapDelete(/user/{id}, (ILoggerProgram Logger, int id)
{Logger.LogInformation(被调用 remove user);var oldUser DB.users.SingleOrDefault(s s.ID id);if (oldUser ! null){return DB.users.Remove(oldUser);}else{return false;}
});
#endregion这是Refit的使用方式首先引入Refit.HttpClientFactory NuGet包注入RefitClient服务到服务容器中这里要把IUserAPI带上并配置BaseAddress。IUserAPI定义的是API接口类型各个方法上的特性决定了请求下游API的信息。再用就是三个调用方法这里只是演示简单的调用所以参数都是固定的。using Refit;var builder WebApplication.CreateBuilder(args);
//配置RefitClient
builder.Services.AddRefitClientIUserAPI().ConfigureHttpClient(httpclient httpclient.BaseAddress new Uri(http://localhost:5026));var app builder.Build();#region 调用者
app.MapGet(/user, async (ILoggerProgram Logger, IUserAPI userAPI) {Logger.LogInformation(调用者 get user);var user await userAPI.GetUser(gsw);user.Name 丰;return user;});
app.MapPost(/user, async (ILoggerProgram 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 (ILoggerProgram 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 (ILoggerProgram Logger, IUserAPI userAPI)
{Logger.LogInformation(调用者 remove user);return await userAPI.RemoveUser(2);
});
#endregion
app.Run();/// summary
/// 定义Refit接口
/// /summary
public interface IUserAPI
{[Get(/users/{username})]TaskUser GetUser(string userName);[Post(/user)]TaskUser AddUser(User user);[Put(/user)]TaskUser ModifyUser(User user);[Delete(/user/{id})]Taskbool RemoveUser(int id);
}其实HttpClient调用API是个大知识点很多API不可能这么简单Refit也提供了一些复杂的配置接口方式详见https://github.com/reactiveui/refit因为场景很多大家可以按文档找适合自己的配置但Refit也不是万能的只是把常用的场景作了适配所以择优而用不必纠结大而完美的解决方案毕竟它是一个库而已。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/83960.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!