首页 > 代码库 > ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理
ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理
话不多说,直接进入主题。
需求:基于Http请求接收Json格式数据,返回Json格式的数据。
整理:对接收的数据与返回数据进行统一的封装整理,方便处理接收与返回数据,并对数据进行验证,通过C#的特性对token进行验证,并通过时间戳的方式统一处理接收与返回的时间格式。
请求Json格式:
{ "Cmd": "login", "Token": "", "PageNo": 0, "OnePageNum": 0, "Params": { "UserName": "emrys", "Pwd":"123456" }}
返回Json格式
{ "Cmd": "login", "Result": 0, "ResultNote": "Success", "TotalRecordNum": 0, "Pages": 0, "PageNo": 0, "Detail": { "UserName": "lining", "Email":"123456789@qq.com", "Age":"20" }}
关于代码会免费开源,所以不做详讲,下面主要是简单的应用。
一、新建新接口
直接新建类名与请求的接口Cmd名称一致,继承BaseAPIService,并在名称后加上APIService,最后实现抽象方法 Process
1 public override APIResult Process() 2 { 3 // 1、获取参数 4 // 1.1、所有参数均在Request里,Request可以获取封装以后所有的接收数据 5 string cmd = Reqeust.cmd; 6 int pageNo = Reqeust.pageNo; 7 object paramses = Reqeust.Params; 8 9 // 1.2、在Params可以获取所有Params里所有的数据 10 string userName = Convert.ToString(Params["UserName"]);11 12 // 1.3、可以通过方法获取数据13 string userName2 = GetParams<string>("UserName");14 string pwd = GetParams<string>("Pwd");15 int age = GetParams<int>("Age");16 17 // 1.4、通过GetParams的第二个参数,可以设置参数是否是必须传入的参数,默认为必须传入的参数18 string userName3 = GetParams<string>("UserName", false); // UserName不是必须需要传入的参数19 string userName4 = GetParams<string>("UserName", true); // UserName是必须需要传入的参数20 21 // 1.5、时间格式做了统一的处理 传入格式为long类型的时间戳 如:146687140300022 DateTime time = GetParams<DateTime>("Time");23 24 // 1.6、如传入的参数有很多,通过方法GetParams一个一个获取则比较麻烦,所以如果遇到参数较多的情况下,需要新建一个Class,属性与Params参数一致即可,如LoginRequestModel,通过方法ConvertToModel则可把参数全部封装到类中,方便使用参数。25 LoginRequestModel login = ConvertToModel<LoginRequestModel>();26 27 // 1.7、可以在传入参数Class中上和类的属性上标记特性[APIRequired]来标记参数是否是必须的参数。28 29 // 2、设置返回值30 // 2.1、 直接设置返回值31 //return APIJson(new { name = "emrys" });32 33 // 2.2、 返回String34 //return APIContext("xxxxxxxxxxxxxx");35 36 // 2.3、返回对象37 // return APIJson(new LoginRequestModel { });38 39 // 2.4 直接返回需要的对象值 40 //return new APIResultJson { resultNote = "xxxxxxx" };41 42 43 return APIJson(new { name = "emrys" });44 }
二、设置验证每个请求的权限
如果需要对每个请求做登录的验证,则只需要在Main类中60行继续实现验证的部分代码即可,如果不需要验证的请求则在类上加上特性APINotNeedToken。
if (nt == null || (!nt.NotNeedToken)) { // 如果需要验证 // 根据token获取用户信息 var user = GetUser(req.token) ; if (user == null) { // 判断Token是否失效 throw new APIException(200, "Token失效。"); } req.APIWorkContext = new APIWorkContext(); req.APIWorkContext.UserId = Convert.ToInt32(user.user_id); req.APIWorkContext.UserEmail = user.email; }
然后可以在每个接口类中的Process方法中获取到UserId,UserEmail等
1 // 3 获取登录信息2 int userId = WorkContext.UserId;
三、实现不同的时间格式
如果需要实现不同的时间格式,如不用时间戳,自定义格式为:yyyy-MM-dd HH:mm:ss,继承类DateTimeConverterBase,并实现ReadJson和WriteJson两个方法。并在返回时设置时间格式。
1、在代码Main中的100行中更改代码
// 设置时间格式 var jsonSettings = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; // 设置过滤null值为不显示 jsonSettings.Converters.Add(new UnixDateTimeConverter());UnixDateTimeConverter为自定义时间类型。 return JsonConvert.SerializeObject(res, jsonSettings);
源码地址:https://github.com/Emrys5/Emrys.API
ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。