WebAPI接口设计经验总结..docx

  1. 1、本文档共10页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
WebAPI接口设计经验总结.

Web API接口设计经验总结在Web API接口的开发过程中,我们可能会碰到各种各样的问题,我在前面两篇随笔《Web API应用架构在Winform混合框架中的应用(1)》、《Web API应用架构在Winform混合框架中的应用(2)--自定义异常结果的处理》也进行了总的介绍,在经过我的大量模块实践并成功运行后,总结了这篇随笔,希望对大家有所帮助。1、在接口定义中确定MVC的GET或者POST方式由于我们整个Web API平台是基于MVC的基础上进行的API开发,因此整个Web API的接口,在定义的时候,一般需要显示来声明接口是[HttpGet]或者[HttpPost],虽然有些接口也可以不用声明,但是避免出现类似下面 的错误信息,显式声明还是有好处的。例如在基类定义的查找对象接口如下所示。///?summary??///?查询数据库,检查是否存在指定ID的对象??///?/summary??///?param?name=id对象的ID值/param??///?returns存在则返回指定的对象,否则返回Null/returns??[HttpGet]??public?virtual?T?FindByID(string?id,?string?token)?如果是增删改的接口,一般需要声明为POST方式提交数据,而且基于安全性的考虑,需要携带更多的参数。///?summary??///?插入指定对象到数据库中??///?/summary??///?param?name=info指定的对象/param??///?returns执行操作是否成功。/returns??[HttpPost]??public?virtual?CommonResult?Insert(T?info,?string?token,?string?signature,?string?timestamp,?string?nonce,?string?appid)??2、动态对象的接口定义在一般的Web API接口里面,我们可能都会碰到很多简单类型的参数,但是又想让它们以POST方式提交数据,那么我们就可以有两种方法来处理,一种是定义一个类来放置 这些参数,一种是采用动态的JObject参数,前者有很多不方便的地方,因为我们不可能为每个接口参数定义多一个实体类,这样可能会有很多难以管理的类 定义。如下面是微信API的调用接口案例,我们也需要设置这样的处理规则。接口调用请求说明?http请求方式:?POST(请使用https协议)?/cgi-bin/groups/update?access_token=ACCESS_TOKEN?POST数据格式:json?POST数据例子:{group:{id:108,name:test2_modify2}}?那么我们采用JObject是这么样的呢,我们来看接口的定义和处理代码。JObject是Newtonsoft.Json.Linq命名空间下的一个对象。?///?summary??///?修改用户密码??///?/summary??///?param?name=param包含userName和userPassword的复合对象/param??///?param?name=token用户访问令牌/param??///?returns/returns??[HttpPost]??public?CommonResult?ModifyPassword(JObject?param,??string?token)??{??//令牌检查,不通过则抛出异常??CheckResult?checkResult?=?CheckToken(token);??dynamic?obj?=?param;??if?(obj?!=?null)??{??string?userName?=?obj.userName;??string?userPassword?=?obj.userPassword;???bool?success?=?BLLFactoryUser.Instance.ModifyPassword(userName,?userPassword);??return?new?CommonResult(success);??}??else??{??throw?new?MyApiException(传递参数出现错误);??}??}??其中我们把JObject对象转换为我们所需要的对象的时候,因为我们没有定义具体的实体类,因此采用了dynamic语法,声明这是一个动态对象,由运行时获取对应的属性。dynamic obj = param;这样我们就可以在调用的时候,动态POST对应的JSON对象给Web API接口,而不需要预先定义各种接口参数的类了。?///?summary

文档评论(0)

kaiss + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档