上篇 利用虚拟方法和反射简化Alisoft API的调用 写的时候比较晚,而且第一次在博客园上发博客,忘记贴具体的实现了.

顺便说一下题外话,阿里的工作人员的态度还是非常不错的,我上篇文章提的用户体验问题,马上就收到他们的反馈.值得表扬.毕竟国内大多开放的api 都是为了炒作概念而已.

言归正传 先贴委托的代码

public delegate TData Actions<TData>(string result);

public static TData Result<TData>(ParBase par, Actions<TData> reslutAction)

{

string status = string.Empty;

string result = Signature.Post(Constants.SIP_API_URL, par.ToString(), out status);

if (string.IsNullOrEmpty(status))

{

return default(TData);

}

else if ("9999".Equals(status)) //以下部分还没有优化,昨晚时间已经比较晚了就没想了 ,

{ //需要把这里抽离出来,毕竟alisoft api目前还在不断改进

return reslutAction(result);

//return null;

}

else if ("1004".Equals(status))

{

System.Web.HttpContext.Current.Response.Redirect(result + Constants.SIP_Redirecturl);

return default(TData); ;

}

else

{

//Utils.Debug("itemcats_get: " + parent_cid + " : " + Signature.GetMessage(status));

return default(TData); ;

}

}

ParBase类是参数的基类,由于大部分的api参数都比较多,传参是个烦人的事情,利用我以前写的ASP.NET偷懒大法三 (利用Attribute特性简化多查询条件拼接sql语句的麻烦) 同样的思路来节省代码

具体就不贴代码了,贴个图吧. (问一下,在word里面怎么能让代码可以折叠?)

图(1)

[Par(IsNeed=true)] 属性是为了表示参数是否必须.只要是为了开发中提醒我参数是否赋值

重写了ToString方法 来实现传给api的参数+sip_sign 参数

 

希望有更好的方法,来让我们偷懒,有好的思路记得告诉我.俺抛砖引玉啦 O(∩_∩)O

posted @ 2008-11-21 12:18 午夜瞎想 阅读(86) 评论(1) 编辑

最近一直在研究Alisfot api,他的文档和帮助都让我很郁闷,可能是第一次做这种开放api的程序吧.为了简化那些烦人的参数和返回值的调用,可以利用.net的匿名委托和反射机制来达到目的,简化后代码可以如下所示:

/// <summary>

/// 此接口方法以实现得到前台展示的店铺内卖家自定义商品类目。

/// </summary>

/// <param name="Nick"></param>

/// <returns></returns>

public List<SellerCat> sellercats_list_get(string Nick)

{

SellerCatsPar parSL = new SellerCatsPar();

parSL.sip_sessionid = sip_sessionid;

parSL.nick = Nick;

return APIUtils.Result<List<SellerCat>>(parSL, (string result) =>

{

NameValueCollection par = new NameValueCollection();

par.Add("ID", "cid");

par.Add("Name", "name");

par.Add("ParentID", "parent_cid");

return new XmlHandler<SellerCat>().ListItemByXml(result, "rsp/seller_cat", par);

});

}

现在是不是简单明了,只要关注于业务就可以啦.

   

第一次用office发文章,太晚了先发一点内容测试测试.:-)

据说 还能贴图 试试

图一

图一为阿里的API文档菜单,我看了一星期,硬没找到他的api列表(中间一直在看百度搜索到的一个老界面).今天才搞明白,原来我一直在点右边红框的文字部分,他的内容竟然也变,但是树形菜单不会下拉.只有再点左边的图片才可以.也可以说是我智商的问题,但这里面也有一个用户体验的问题.在做系统的时候会习惯的认为用户会按照自己的思维做事情,往往一个简单的东西,不同的人就会得到不同的结果.比如这个问题.如果不是因为我继续关注,阿里的这个api我肯定会以为他没提供而放弃找其他的啦.

posted @ 2008-11-21 00:17 午夜瞎想 阅读(1991) 评论(8) 编辑