ドッキング API モデルの作成
モデル作成依頼
パブリック メソッドを抽出する
モデルに URL を入れると、後のメンテナンスが容易になります。
[JsonObject(MemberSerialization.OptOut)]//JsonObject序列化时忽略某些列
public abstract class BaseRequest
{
[JsonIgnore]//利用特性忽略序列化该字段
public string Host {
get; set; }
[JsonIgnore]
public string dev_key {
get; set; }
protected abstract string Url {
get; }
/// <summary>
/// 获取Url
/// </summary>
/// <returns></returns>
public string Get_ApiUrl()
{
if(string.IsNullOrWhiteSpace(Host))
{
throw new ArgumentNullException(paramName: nameof(this.Host), message: "未给Host赋值");
}
if(string.IsNullOrWhiteSpace(dev_key))
{
throw new ArgumentNullException(paramName: nameof(this.dev_key), message: "未给dev_key赋值");
}
if(!string.IsNullOrWhiteSpace(Url))
{
//这里是验签方法
string datestr = JsonConvert.SerializeObject(this);
string TobeEncrypted = datestr + "&" + this.dev_id + "&" + this.dev_key;
string MD5str= System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(TobeEncrypted, "MD5").ToLower();
byte[] bytes = Encoding.UTF8.GetBytes(MD5str);
string sign = Convert.ToBase64String(bytes);
return Host + this.Url + "?sign=" + sign;
}
else
{
throw new ArgumentNullException(paramName: nameof(this.Url), message: "模型类没有定义请求链接");
}
}
}
モジュール要求モデルを定義する
ここで継承する親クラスは、上記の public 属性を抽出したモデルです. ここで、親クラスの URL を書き換えます.
このメソッドは、親クラスに署名検証メソッドを記述するだけでよいため、コードの再利用率が向上し、高含有率を実現し、その後のメンテナンスに便利です。
public class AddOrderGratuityfeeReq : BaseRequest
{
//子类自己的属性
public string order_id {
get; set; }
//重写父类URL属性
protected override string Url {
get {
return "/open/api/external/addordergratuityfee"; } }
}
応答モデルの作成
パブリック メソッドを抽出する
コードの冗長性を減らすためのパブリック メソッドの抽出もここにあります。
/// <summary>
/// 返回实体
/// </summary>
/// <typeparam name="T"></typeparam>
public class BaseResponse<T>
{
/// <summary>
/// 错误代码
/// </summary>
public int error_code {
get; set; }
/// <summary>
/// 错误描述
/// </summary>
public string error_msg {
get; set; }
/// <summary>
/// 详细报错信息(报错的时候非空)
/// </summary>
public object error_data {
get; set; }
/// <summary>
/// 返回数据
/// </summary>
public T result {
get; set; }
}
応答モデルを定義する
public class CreateOrdeRes:BaseResponse<CreateOrdeRes>
{
//这里如果有其他单独属于这一个模块的属性可以写在这里
}
呼び出し方法
CreateOrderReq ordeReq = new CreateOrderReq();//请求对象
string req = HttpHelper.Post(ordeReq.Get_ApiUrl(), JsonConvert.SerializeObject(ordeReq));
//将返回数据序列化为响应对象
CreateOrdeRes ordeRes = JsonConvert.DeserializeObject<CreateOrdeRes>(req);
高効率コードは通常の開発の要約にあり、開発プロセスでは、後のメンテナンスを容易にする方法、およびコードの冗長性を回避するためにコード効率と再利用率を向上させるための記述方法を検討する必要があります。