【企业通讯录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 ...
随机推荐
- 题解【bzoj3529 [SDOI2014]数表】
Description \(T\) 组询问,定义 \(F(n)=\sum\limits_{d|n}d\).每次给出 \(n,m,a\) 求 \[\sum\limits_{i=1,j=1,F(\gcd( ...
- 「Python」python日期与字符串互转
1str -> date import datetime detester = ‘2017-01-01' date = datetime.datetime.strptime(detester,’ ...
- OpenCV---环境安装和初次使用
一:环境安装 pip3 install opencv-python #OpenCV模块,必须安装 pip3 install opencv-contrib-python #OpenCV扩展模块,选择安装 ...
- [LeetCode] “全排列”问题系列(一) - 用交换元素法生成全排列及其应用,例题: Permutations I 和 II, N-Queens I 和 II,数独问题
一.开篇 Permutation,排列问题.这篇博文以几道LeetCode的题目和引用剑指offer上的一道例题入手,小谈一下这种类型题目的解法. 二.上手 最典型的permutation题目是这样的 ...
- vijos 1243 生产产品 DP + 单调队列优化
LINK 题意:有1个产品,m个步骤编号为1~m.步骤要在n个机器人的手中生产完成.其中,第i个步骤在第j个机器人手中的生产时间给定为$T[i][j]$,切换机器人消耗cost.步骤必须按顺序,同一个 ...
- 2015/11/3用Python写游戏,pygame入门(3):字体模块、事件显示和错误处理
游戏里面一般是肯定会出现文字显示的,即使是俄罗斯方块也应该显示分数.那么我们应该怎样来显示文字呢,今天一起学习一下pygame的font模块. 使用字体模块 pygame可以直接调用系统字体,也可以调 ...
- [译]Quartz 框架 教程(中文版)2.2.x 之第二课 Quartz API,Jobs和Triggers简介
第二课:QuartzAPI,Jobs和Triggers简介 Quartz API Quartz API 关键的几个接口: Scheduler:跟任务调度相关的最主要的API接口. Job:你期望任务调 ...
- php常用表单验证类用法实例
<?php /** * 页面作用:常用表单验证类 * 作 者:欣然随风 * QQ:276624915 */ class class_post { //验证是否为指定长度的字母/数字组合 func ...
- Hbuilder连接第3方模拟器(夜神)
http://www.bcty365.com/content-146-5148-1.html
- 生成验证码tp
js里拼接随机数 页面上链接 去掉后缀名