本文将指导大家如何去创建企业通讯录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番外篇】怎么样创建服务端?的更多相关文章

  1. iOS冰与火之歌(番外篇) - 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权

    iOS冰与火之歌(番外篇) 基于PEGASUS(Trident三叉戟)的OS X 10.11.6本地提权 蒸米@阿里移动安全 0x00 序 这段时间最火的漏洞当属阿联酋的人权活动人士被apt攻击所使用 ...

  2. electron教程(番外篇二): 使用TypeScript版本的electron, VSCode调试TypeScript, TS版本的ESLint

    我的electron教程系列 electron教程(一): electron的安装和项目的创建 electron教程(番外篇一): 开发环境及插件, VSCode调试, ESLint + Google ...

  3. #3使用html+css+js制作网页 番外篇 使用python flask 框架 (II)

    #3使用html+css+js制作网页 番外篇 使用python flask 框架 II第二部 0. 本系列教程 1. 登录功能准备 a.python中操控mysql b. 安装数据库 c.安装mys ...

  4. 【番外篇】ASP.NET MVC快速入门之免费jQuery控件库(MVC5+EF6)

    目录 [第一篇]ASP.NET MVC快速入门之数据库操作(MVC5+EF6) [第二篇]ASP.NET MVC快速入门之数据注解(MVC5+EF6) [第三篇]ASP.NET MVC快速入门之安全策 ...

  5. 给深度学习入门者的Python快速教程 - 番外篇之Python-OpenCV

    这次博客园的排版彻底残了..高清版请移步: https://zhuanlan.zhihu.com/p/24425116 本篇是前面两篇教程: 给深度学习入门者的Python快速教程 - 基础篇 给深度 ...

  6. 可视化(番外篇)——在Eclipse RCP中玩转OpenGL

    最近在看有关Eclipse RCP方面的东西,鉴于Gephi是使用opengl作为绘图引擎,所以,萌生了在Eclipse RCP下添加画布,使用opengl绘图的想法,网上有博文详细介绍这方面的内容, ...

  7. 可视化(番外篇)——SWT总结

    本篇主要介绍如何在SWT下构建一个应用,如何安装SWT Designer并破解已进行SWT的可视化编程,Display以及Shell为何物.有何用,SWT中的常用组件.面板容器以及事件模型等. 1.可 ...

  8. 【重走Android之路】【番外篇】有关于null的一些知识点

    [重走Android之路][番外篇]有关于null的一些知识点   1.首先,到底什么是null? null是Java中的一个关键字,用于表示一个空对象引用,但其本身并不是任何类型也不是属于任何对象. ...

  9. 番外篇 之 C#委托

    对于上一节 番外篇之C#多线程的反思 反思一:   Thread th = new Thread(参数); ////参数的总结 ////首先,第一情况,对于 Thread th = new Threa ...

随机推荐

  1. 04-树6. Huffman Codes--优先队列(堆)在哈夫曼树与哈夫曼编码上的应用

    题目来源:http://www.patest.cn/contests/mooc-ds/04-%E6%A0%916 In 1953, David A. Huffman published his pap ...

  2. 手脱nSPack 2.1 - 2.5

    1.载入PEID 使用核心扫描出的结果 nSPack 2.1 - 2.5 -> North Star/Liu Xing Ping 2.载入OD,一进来就是一个大跳转,F8跟着走 >- E9 ...

  3. Nginx高级应用之Location Url 配置

    原文地址:https://www.linuxidc.com/Linux/2017-03/141910.htm 基本配置 为了探究nginx的url配置规则,当然需要安装nginx.我使用了vagran ...

  4. C#实现SQL数据库备份与恢复

    有两种方法,都是保存为.bak文件.一种是直接用Sql语句执行,另一种是通过引用SQL Server的SQLDMO组件来实现:  1.通过执行Sql语句来实现 注意,用Sql语句实现备份与还原操作时, ...

  5. OpenCV---分水岭算法

    推文: OpenCV学习(7) 分水岭算法(1)(原理简介简单明了) OpenCV-Python教程:31.分水岭算法对图像进行分割(步骤讲解不错) 使用分水岭算法进行图像分割 (一)获取灰度图像,二 ...

  6. 51nod 1548 欧姆诺姆和糖果 (制约关系优化枚举)

    1548 欧姆诺姆和糖果 题目来源: CodeForces 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题  收藏  关注 一天,欧姆诺诺姆来到了朋友家里,他发现了 ...

  7. java中集合去重1

    //TreeMap 处理 处理后 得到的值 按拼音排序 TreeMap map = new TreeMap(new MaterialComparator()); map.put("东莞&qu ...

  8. 原生js写的一个简单slider

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  9. 【BZOJ】2243 [SDOI2011]染色

    [算法]树链剖分+线段树 [题解] 树链剖分算法:http://www.cnblogs.com/onioncyc/p/6207462.html 定义线段树结构体有l,r,lc,rc,sum,data. ...

  10. 【CodeForces】708 B. Recover the String 数学构造

    [题目]B. Recover the String [题意]找到一个串s,满足其中子序列{0,0}{0,1}{1,0}{1,1}的数量分别满足给定的数a1~a4,或判断不存在.数字<=10^9, ...