钉钉的每个API接口返回的数据都包含有ErrCode和ErrMsg,由此我们想到可以使用基类来定义,之后的其他数据以继承的方式来达成。所以我们定义一个结果基类。
namespace DDSDK
{
public class ResultPackage
{
/// <summary>
/// 错误码
/// </summary>
public ErrCodeEnum ErrCode { get; set; } = ErrCodeEnum.Unknown;
/// <summary>
/// 错误消息
/// </summary>
public string ErrMsg { get; set; }
/// <summary>
/// 结果的json形式
/// </summary>
public String Json { get; set; }
#region IsOK Function
public bool IsOK()
{
return ErrCode == ErrCodeEnum.OK;
}
#endregion
#region ToString
public override string ToString()
{
String info = $"{nameof(ErrCode)}:{ErrCode},{nameof(ErrMsg)}:{ErrMsg}";
return info;
}
#endregion
}
}
为了便于查验返回的结果,我们又定义了一个Json来保存取回的数据。为了能更好的判断数据包是否正确,增加了IsOK函数。为了更好的查看错误码和错误信息,我们重载了ToString的方法。
有了结果的基类,那么我们就可以将前一篇的获取access_token的结果类重新定义,代码如下
public class TokenResult:ResultPackage
{
public string Access_token { get; set; }
}
由于我们每次发起的都是网络请求,而网络请求主要是以GET和POST的方式发起的,所以我们可以定义一个分析器,在分析器中封装GET和POST的请求方法,之后将相应的结果以泛型的形式返回。代码如下。
namespace DDSDK
{
/// <summary>
/// 分析器
/// </summary>
public class Analyze
{
#region Get Function
/// <summary>
/// 发起GET请求
/// </summary>
/// <typeparam name="T"></typeparam>
/// <param name="requestUrl"></param>
/// <returns></returns>
public static T Get<T>(String requestUrl) where T : ResultPackage, new()
{
String resultJson = RequestHelper.Get(requestUrl);
return AnalyzeResult<T>(resultJson);
}
#endregion
#