【企业通讯录app番外篇】怎么样创建服务端?
本文将指导大家如何去创建企业通讯录app的服务端
除了获取图片,客户端与服务端唯一的交互就是获取最新数据,如果该用户不能获取数据(用户名密码错误、用户离职被删)则返回空。
1:典型的交互流程如下:
用户名与密码
app -----------------------------> 服务端
app <----------------------------- 服务端
json格式的通讯录
2:接下来讲讲json通讯录需要哪些属性。
一共需要7个,见下文。
{"UserName":"姓名","Company":"公司","Department":"部门","JobTitle":"职位","Phone":"手机号1","ShortPhone":"手机号2","AvatarURL":"头像地址"}
3:接下来给出服务端的具体实现参考
asp.net版:
为啥要拼接而不是使用框架序列化,是为了更高的性能,参考
private void getList(HttpContext context)
{
string userName = context.Request.QueryString["u"];
string password = context.Request.QueryString["p"]; if (string.IsNullOrEmpty(userName) || string.IsNullOrEmpty(password))
{
context.Response.Write("");
return;
} if (检查用户名密码是否可用(userName, password) == null)
{
context.Response.Write("");
return;
} string sqlStr = @"你的sql语句";
StringBuilder sb = new StringBuilder(); using (SqlDataReader reader = (SqlDataReader)SqlHelper.ExecuteReader(sqlStr))
{ while (reader.Read())
{
sb.Append(",{");
sb.AppendFormat("\"UserName\":\"{0}\",\"Company\":\"{1}\",\"Department\":\"{2}\",\"JobTitle\":\"{3}\",\"Phone\":\"{4}\",\"ShortPhone\":\"{5}\",\"AvatarURL\":\"{6}\"", reader["UserName"], reader["Company"], reader["Department"], reader["JobTitle"], reader["Phone"], reader["ShortPhone"], reader["AvatarURL"]);
sb.Append("}");
}
} if (sb.Length > )
{
sb[] = '[';
sb.Append("]");
context.Response.Write(sb);
}
else
context.Response.Write("");
}
如果你没有数据库,一个json文件也是可以滴。
简单nodejs版demo实现(需要安装restify)
var restify = require('restify');
var rf=require("fs");
var contactList=rf.readFileSync("json文件地址","utf-8"); function respond(req, res, next) {
res.setHeader('content-type', 'text/plain');
if (req.params.name == "账户名" && req.params.pwd=="密码") {
res.send(contactList);
}
else
{
res.send('');
}; } var server = restify.createServer();
server.get('/u/:name/:pwd', respond); server.listen(3900, function() {
console.log('%s listening at %s', server.name, server.url);
});
调用方式(自己改ip地址): http://192.168.1.1:3900/u/用户名/密码
4:如何做一个服务端,总结如下:
1:对客户端传递的账户密码进行验证,错误返回空,否则进行下步骤
2:sql获取数据库的用户信息
3:拼接成json格式返回
【企业通讯录app番外篇】怎么样创建服务端?的更多相关文章
- iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权
iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...
- electron教程(番外篇二): 使用TypeScript版本的electron, VSCode调试TypeScript, TS版本的ESLint
我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google ...
- #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)
#3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...
- 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)
目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...
- 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV
这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...
- 可视化(番外篇)——在Eclipse RCP中玩转OpenGL
最近在看有关Eclipse RCP方面的东西,鉴于Gephi是使用opengl作为绘图引擎,所以,萌生了在Eclipse RCP下添加画布,使用opengl绘图的想法,网上有博文详细介绍这方面的内容, ...
- 可视化(番外篇)——SWT总结
本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...
- 【重走Android之路】【番外篇】有关于null的一些知识点
[重走Android之路][番外篇]有关于null的一些知识点 1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...
- 番外篇 之 C#委托
对于上一节 番外篇之C#多线程的反思 反思一: Thread th = new Thread(参数); ////参数的总结 ////首先,第一情况,对于 Thread th = new Threa ...
随机推荐
- Spring MVC 使用Servlet原生API作为参数
具体看代码: @RequestMapping("/testServletAPI") public void testServletAPI(HttpServletRequest re ...
- selenium - switch_to_alert() - 警告框处理
在WebDriver中处理JavaScript所生成的alert.confirm以及prompt十分简单,具体做法是使用 switch_to.alert 方法定位到 alert/confirm/pro ...
- C++类间转换之dynamic_cast
当在C++的基类与派生类之间转换时,其多态性充分显现出来: 本次只讨论 dynamic_cast 的用法. 在查阅资料后发现百度百科关于 dynamic_cast (以及static_cast ...
- [DeeplearningAI笔记]序列模型3.1基本的 Seq2Seq /image to Seq
5.3序列模型与注意力机制 觉得有用的话,欢迎一起讨论相互学习~Follow Me 3.1基础模型 [1] Sutskever I, Vinyals O, Le Q V. Sequence to Se ...
- React读取Excel——js-xlsx 插件的使用
介绍 SheetJS js-xlsx 是一款能够读写多种格式表格的插件,浏览器支持良好,并且能在多个语言平台上使用,目前在 github 上有 12602 个 star, 刚好项目中遇到了前端解析 e ...
- Asp.net mvc 大文件上传 断点续传 进度条
概述 项目中需要一个上传200M-500M的文件大小的功能,需要断点续传.上传性能稳定.突破asp.net上传限制.一开始看到51CTO上的这篇文章,此方法确实很不错,能够稳定的上传大文件,http: ...
- NOIP模拟7
期望得分:100+100+20=220 实际得分:100+95+20=215 T1 洛谷 P1306 斐波那契公约数 #include<cstdio> #include<cstrin ...
- Codeforces Round #191 (Div. 2) A. Flipping Game(简单)
A. Flipping Game time limit per test 1 second memory limit per test 256 megabytes input standard inp ...
- GridControl详解(八)菜单
菜单控件 拖入窗口中 显示如下 设置popupMenu 设置barManager 设置controller 增加菜单项 弹出配置窗口 一般菜单项设置 对应属性如下: 对应事件: 选择菜单项设置 事件同 ...
- 【SRM20】数学场
第一题 n个m位二进制,求异或值域总和. [题解]异或值域--->使用线性基,解决去重问题. m位二进制--->拆位,每位根据01数量可以用组合数快速统计总和. #include<c ...