第一篇博客,如有不足请大家多多谅解。

最近一段时间主导着一个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接口的开发的更多相关文章

  1. ASP.NET中使用Entity Framework开发登陆注册Demo

    这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 当前步骤是该项目的第一部分 第一部分(当前) 第二部分 大完结版本 直接上步骤,有类似的开发登陆注册也可以参考. 登陆注册的 ...

  2. ASP.NET中使用Entity Framework开发增删改查的Demo(EF增删改查+母版页的使用)

    这里更多的是当作随身笔记使用,记录一下学到的知识,以便淡忘的时候能快速回顾 这里是该项目的第二部分, 第一部分 第二部分(当前部分) 大完结版本 此Demo是新建了一个音乐类型的web,然后使用母版页 ...

  3. Visual Studio 2015和ASP.NET 5中可用的前端开发工具集

    最近微软发布了一本白皮书,谈到了一些可以和Visual Studio 2015和ASP.NET 5配合使用的JS/前端Web开发工具(比如:函数库.任务执行器.框架等). 由于现在前端开发的生态系统在 ...

  4. api 接口开发理论 在php中调用接口以及编写接口

    如: http://localhost/openUser.php?act=get_user_list&type=json 在这里openUser.php相当于一个接口,其中get_user_l ...

  5. ASP.NET中常用的优化性能的方法

    1. 数据库访问性能优化 数据库的连接和关闭 访问数据库资源需要创建连接.打开连接和关闭连接几个操作.这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源.ASP.NET中提供了连接池( ...

  6. Asp.Net中使用OpenRowSet操作Excel表,导入Sql Server(实例)

    有两种接口可供选择:Microsoft.Jet.OLEDB.4.0(以下简称 Jet 引擎)和Microsoft.ACE.OLEDB.12.0(以下简称 ACE 引擎). Jet 引擎大家都很熟悉,可 ...

  7. ASP.NET中的Session怎么正确使用

    Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...

  8. ASP.NET中的XML和JSON

    一.DOM简介 1.XML 定义:XML是一种跨语言.跨平台的数据储存格式 2.什么是DOM DOM(document object model)文档对象模型:是一种允许程序或脚本动态的访问更新文档内 ...

  9. ASP.NET中的Session怎么正确使用[转]

    Session对象用于存储从一个用户开始访问某个特定的aspx的页面起,到用户离开为止,特定的用户会话所需要的信息.用户在应用程序的页面切换时,Session对象的变量不会被清除. 对于一个Web应用 ...

随机推荐

  1. 验证SQLServer死锁进程

    SELECT '现在没有阻塞和死锁信息' AS message -- 循环开始WHILE @intCounter <= @intCountProperties BEGIN-- 取第一条记录 SE ...

  2. ubuntu上lamp环境搭建

    首先,介绍个彻底删除linux已经安装的软件的方法. sudo apt-get purge mysql-server mysql-client mysql-common mysql-server-5. ...

  3. POJ - 3268 单源最短路

    题意:给定一些有向边,以及一个目的地,从某个点到达目的地,再从目的地回到那个点.共有n个点,问这n个点花费最大是多少? 思路:从目的地回去直接把目的地作为源点即可.那么从某个点到达目的地应该如何得到最 ...

  4. 2017第八届蓝桥杯 K倍区间

    标题: k倍区间 给定一个长度为N的数列,A1, A2, - AN,如果其中一段连续的子序列Ai, Ai+1, - Aj(i <= j)之和是K的倍数,我们就称这个区间[i, j]是K倍区间. ...

  5. Go基础之--操作Mysql(一)

    关于标准库database/sql database/sql是golang的标准库之一,它提供了一系列接口方法,用于访问关系数据库.它并不会提供数据库特有的方法,那些特有的方法交给数据库驱动去实现. ...

  6. 详解Java的自动装箱与拆箱(Autoboxing and unboxing)

    一.什么是自动装箱拆箱 很简单,下面两句代码就可以看到装箱和拆箱过程 //自动装箱 Integer total = 99; //自定拆箱 int totalprim = total; 简单一点说,装箱 ...

  7. cips2016+学习笔记︱简述常见的语言表示模型(词嵌入、句表示、篇章表示)

    在cips2016出来之前,笔者也总结过种类繁多,类似词向量的内容,自然语言处理︱简述四大类文本分析中的"词向量"(文本词特征提取)事实证明,笔者当时所写的基本跟CIPS2016一 ...

  8. 笔记︱决策树族——梯度提升树(GBDT)

    每每以为攀得众山小,可.每每又切实来到起点,大牛们,缓缓脚步来俺笔记葩分享一下吧,please~ --------------------------- 本笔记来源于CDA DSC,L2-R语言课程所 ...

  9. HI3531的DDR3配置流程

    DDR3 初始化配置流程 系统上电之后,必须先完成DDR3 SDRAM 的初始化操作,系统才能访问DDR3 SDRAM.在进行初始化之前需要注意以下几点: 对DDR3 SDRAM 进行上电操作时,需要 ...

  10. freemarker报错之七

    1.错误描述 五月 30, 2014 11:33:57 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...