扩展 WudiLib API
WudiLib 中暴露了发送请求、获得响应的底层方法。如果您希望扩展 WudiLib 的 API,可以通过扩展方法来实现。
例如,您想使用获取陌生人信息这个 API。
提示
此 API 不一定已被所有 OneBot 服务端实现,使用时请选用已实现的 API,根据实际需求扩展。
扩展 WudiLib API 有两步,分别是定义响应数据和定义请求方法。扩展完成后,便可像调用普通的 API 那样调用扩展的 API。
定义响应数据类
首先查阅文档,确定您要扩展的 API 的响应数据,然后定义对应的类。WudiLib 用 Newtonsoft.Json 作为反序列化的工具,请使用相应的特性(Attribute)标记每个属性。此 API 的响应定义如下
using Newtonsoft.Json;
using Sisters.WudiLib.Responses;
public class StrangerInfo
{
[JsonProperty("user_id")]
public long UserId { get; set; }
[JsonProperty("nickname")]
public string NickName { get; set; }
[JsonProperty("sex")]
public Sex Sex { get; set; } // `Sex` 是 `Sisters.WudiLib.Responses` 中已经定义好的枚举,可以直接使用
[JsonProperty("age")]
public int Age { get; set; }
}
提示
如果要扩展的 API 没有响应数据,则不用定义。
定义请求方法
下面需要定义一个扩展方法。
using Sisters.WudiLib;
using Sisters.WudiLib.Responses;
public static Task<StrangerInfo> GetStrangerInfoAsync(this HttpApiClient httpApiClient, long userId, bool noCache = false)
{
return httpApiClient.CallAsync<StrangerInfo>("get_stranger_info", new
{
user_id = userId,
no_cache = noCache,
});
}
提示
如果是没有响应数据的 API,可以调用非泛型的 CallAsync
方法,返回的是 Task<bool>
,指示是否成功。
调用扩展 API
扩展好了,您就可以像调用普通 API 那样调用您自己扩展出来的 API。
HttpApiClient httpApiClient = ...; // 省略了配置 API 客户端的代码。
var strangerInfo = await httpApiClient.GetStrangerInfoAsync(123456789, true);