asp.net中http接口的开发
第一篇博客,如有不足请大家多多谅解。
最近一段时间主导着一个app的开发。所有功能都交给后台接口进行处理。采用http,传输的数据类型为json。
http接口是一种基于基于TCP、http服务的api,有3次握手,文本传输协议,项目与项目之间互相请求的一种规范约定,其实归根结底,webservice、webapi都是一种http接口。只不过更加规范一点。
http接口好处呢?协议群众基础广,开发调试方便,可以跨语言、跨系统的进行调用。比如我asp.net开发的接口,java可以调用、ios可以调用、php也可以进行调用,无论pc或移动端。接下来就用一个简单的例子说明吧。
1.用程序包管理器导入Newtonsoft.Json包(C#Json序列化工具) 命令行:pm> install-package newtonsoft.json
2.建父类,每个aspx继承父类,可添加sign进行权限验证,op为接口名称,entity为解析后的json数据
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Web;
- using Newtonsoft.Json;
- namespace XKFWEB
- {
- /// <summary>
- /// 通用权限验证父类
- /// </summary>
- public class PageBase : System.Web.UI.Page
- {
- //验证状态
- protected bool Sign
- {
- get
- {
- try
- {
- //BC.Common.Encrypt.DESDecrypt_China(Request["sign"] ?? BC.Common.Utilty.GenderGuid());
- string testKey = BC.Common.Encrypt.DESEncrypt_China(BC.Common.Utilty.GetWebConfig("testKey"));//方便本地测试
- BC.Common.Encrypt.DESDecrypt_China(testKey ?? BC.Common.Utilty.GenderGuid());
- return true;
- }
- catch
- {
- }
- return false;
- }
- }
- //操作类型参数
- protected string OP
- {
- get
- {
- return Request["op"] ?? "";
- }
- }
- protected dynamic entity = "";
- protected override void OnInit(EventArgs e)
- {
- string jsonData = Server.UrlDecode(Request["jsonData"] ?? "");
- entity = JsonConvert.DeserializeObject<dynamic>(jsonData);
- if (OP!="register" )
- {
- if (!Sign)
- {
- Response.Write("非法操作");
- Response.End();
- }
- }
- }
- }
- }
3.新建一个aspx,继承PageBase父类。写一个通用登录的接口,所需参数(手机号(账号):uName,密码:uPwd,微信Id,设备码:xIMEI)
判断接口op参数,并跳转到对应方法
- private void userLogin()
- {
- try
- {
- Dictionary<string, dynamic> dict = new Dictionary<string, dynamic>();
- List<dynamic> list = new List<dynamic>();
- string md5Pwd = BC.Common.Encrypt.MD5(entity["uPwd"].ToString());
- string wxId = entity["wxId"].ToString();
- string xIMEI = entity.xIMEI;//设备码
- DataTable dt = business.login(entity["uName"].ToString(), md5Pwd, wxId);//账号:uName,密码:uPwd,设备码if (dt.Rows.Count > )
- {
- foreach (DataRow row in dt.Rows)
- {
- list.Add(new { UserId = row["UserId"], UserLogin = row["UserLogin"], UserMobile = row["UserMobile"], RealName = row["RealName"], UserFace = row["UserFace"], Signature = row["Signature"], Description = row["Description"], AddDate = BC.Common.Utilty.DateTimeToString(Convert.ToDateTime(row["AddDate"])), EditDate = BC.Common.Utilty.DateTimeToString(Convert.ToDateTime(row["EditDate"])), EnableCourse = row["EnableCourse"], EnableInfo = row["EnableInfo"] });
- userId = row["UserId"].ToString();
- business.addLog("userLogin", "" + RealName + " 登录小课坊", "", xIMEI, "用户登录", UserId);
- }
- Response.Write(BC.Common.Utilty.Serialize(new { Return = "", sign = BC.Common.Encrypt.DESEncrypt_China(UserId), list = list }));
- }
- else
- {
- Response.Write(utilty.LoadErrorMessage("登录失败,账户或密码错误"));
- }
- }
- catch (Exception E)
- {
- Response.Write(utilty.LoadErrorMessage(E.Message));
- }
- }
请求路径以及数据:(域名)+/user/userInfo.aspx?op=login&jsonData={"uName":"13786868686","uPwd":"970512","xIMEI":"123","wxId":""} (注意,jsonData需严格按照json格式,并且要Url Encode)
接口中获取请求的json方法有两种: entity["参数名称"] entity.参数名称 entity为PageBase父类解析好的JsonData
返回给用户请求的数据可在Response.Write中自定义,最好带上请求响应状态,需Serialize
请求成功响应json数据:
{
"Return": "0",
"sign": "CBC41724059BD521B640CDA5BC99DFB815FD5E532F6D09FD",
"list": [{
"UserId": "dsadeqe2397-1239dsa-1",
"UserLogin": "13928282828",
"UserMobile": "13928282828",
"RealName": "王继峰",
"UserFace": "/img/userImg/wjf.jpg",
"Signature": "公司放假还早着呢,努力工作吧。",
"Description": "我的名字叫做王继峰,性别男,职业程序员这是我很长的一段个人自我简介数据字段 Description",
"AddDate": "2018-01-19 17:56:43",
"EditDate": "2018-01-19 17:56:43",
"EnableCourse": 1,
"EnableInfo": 1
}]
}
总结:接口是一种约定,请求与输出的参数都必须遵循这个约定。http采用post进行请求。
asp.net中http接口的开发的更多相关文章
- ASP.NET中使用Entity Framework开发登陆注册Demo
这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 当前步骤是该项目的第一部分 第一部分(当前) 第二部分 大完结版本 直接上步骤,有类似的开发登陆注册也可以参考. 登陆注册的 ...
- ASP.NET中使用Entity Framework开发增删改查的Demo(EF增删改查+母版页的使用)
这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 这里是该项目的第二部分, 第一部分 第二部分(当前部分) 大完结版本 此Demo是新建了一个音乐类型的web,然后使用母版页 ...
- Visual Studio 2015和ASP.NET 5中可用的前端开发工具集
最近微软发布了一本白皮书,谈到了一些可以和Visual Studio 2015和ASP.NET 5配合使用的JS/前端Web开发工具(比如:函数库.任务执行器.框架等). 由于现在前端开发的生态系统在 ...
- api 接口开发理论 在php中调用接口以及编写接口
如: http://localhost/openUser.php?act=get_user_list&type=json 在这里openUser.php相当于一个接口,其中get_user_l ...
- ASP.NET中常用的优化性能的方法
1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...
- Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)
有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎). Jet 引擎大家都很熟悉,可 ...
- ASP.NET中的Session怎么正确使用
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...
- ASP.NET中的XML和JSON
一.DOM简介 1.XML 定义:XML是一种跨语言.跨平台的数据储存格式 2.什么是DOM DOM(document object model)文档对象模型:是一种允许程序或脚本动态的访问更新文档内 ...
- ASP.NET中的Session怎么正确使用[转]
Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...
随机推荐
- LNMP Yii2 验证码不显示问题最终解决方案
首先,本地使用OK! 然后,新配置的LNMP环境,验证码一直显示不出来,看了Yii2的验证码存在session里,怀疑是session有问题. 在测试其他页面的时候,发现:session_start( ...
- Flask從入門到入土(二)——請求响应與Flask扩展
———————————————————————————————————————————————————————————— 一.程序和請求上下文 Flask從客戶端收到請求時,要讓視圖函數能訪問一些對象 ...
- 深度学习中batch normalization
目录 1 Batch Normalization笔记 1.1 引包 1.2 构建模型: 1.3 构建训练函数 1.4 结论 Batch Normalization笔记 我们将会用MNIST数 ...
- Scrum方法论
产品负责人: 代表客户或未来游戏玩家.产品负责人需要确保所有有趣的功能都能在游戏中实现,还负责对游戏完整观感的理解. Scrum主管: 代表理性思维.需要主持每日Scrum会议,并确保每个人都在执行任 ...
- python中的迭代器&&生成器&&装饰器
迭代器iterator 迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 迭代器只能往前不会后退,不过这也没什么,因为人们很少在迭代途中往后退.另外, ...
- Windows Developer Day Review
北京时间 3 月 8 日凌晨 1 点钟,今年的第一次 Windows Developer Day 正式召开. 因为时间太晚看不了直播,我也是第二天早上在公司看的重播.整个会议过程有很多值得去研究 ...
- 异常-----spring明明注入了Service到Action中,为什么运行的时候Service为空,在抽象类中,有子类来继承的
xml的配置文件 <bean id="fftController" class="com.bill99.query.controller.FftController ...
- HALCON学习-资料
HALCON学习网: http://www.ihalcon.com/ 学习资料推荐博客: http://k594081130.blog.163.com/blog/static/218359013201 ...
- WPF基础篇之静态资源和动态资源
静态资源(StaticResource)指的是在程序载入内存时对资源的一次性使用,之后就不再访问这个资源了. 动态资源(DynamicResource)指的是在程序运行过程中然会去访问资源. 一.定义 ...
- WPF基础篇之空间布局
由于之前自己做的都是大多是B/S架构的项目,加入新公司,公司现在用的WPF,在WPF中一个比较重要的知识点:布局 在网上找到一篇比较好的介绍WPF布局的文章. 文章地址:http://www.cnbl ...