转载

如何在开发过程中搭建简单的假数据服务器

在开发一块新功能的过程中,我们通常会涉及到与后端接口联调的问题。新的界面、新的后口,这时候在开发的时候往往前端就很尴尬,后端不依赖前端,但是前端十分依赖后端。

大部分应用都会有或多或少地依赖后端数据,有的界面只需要简单搞个假数据传入即可,但是我们还需要应对很多复杂情况,比如:

  • 处理无数据、返回错误、各类非正常的状态;
  • 处理分页数据的情况;
  • 模拟一个请求中、请求失败、请求结果返回的情景;

这时候如果能够写一个简单的服务器,你请求真实的接口url,只需要给手机设置一个代理,就返回你设置的假数据。这样你就可以完全抛开其他依赖的顾虑,可以像正常情况一样开发、校验结果,而不是依赖写死在代码里的各种假逻辑(这样做也会为后面的开发带来一些隐患)。

实际上服务器本身的逻辑是非常简单的,但是要真正得搭建成你所需要的环境,需要一些复杂功夫。本文以nodejs为例,具体描述一下如何在本机上搭建测试服务器。

使用node搭建起简单的服务器脚本

1. 安装

Unix 用户可以使用命令行安装nodejs。

Windows 用户可以直接下载安装包。

安装成功后如果在命令行下输入 node -v 能够打印出版本信息,说明安装成功了。

2. 简单服务器

Node 服务器可以运行在“IP:PORT”上,我们可以通过如下代码来在 127.0.0.1:2333 端口上搭建起一个简单的服务器:

consthttp =require('http');
http.createServer( (req, res) => {
// 返回码200,返回头中标识内容为json
 res.writeHead(200, {'Content-Type':'text/json'});
letresp = {
 code : 0,
 time : 1469981217,
 data : {
 name : 'desmond',
 gender : 'male'
 }
 };
 res.end(JSON.stringify(resp));// 将resp转换为JSON字符串返回。
}).listen(2333,'127.0.0.1', )

具体的信息可以参考 Nodejs-http .

3. IDE配置

从IDE环境切换到脚本环境来写代码总会不顺手,推荐一个我认为比较容易上手的配置吧:

  • 编辑器 Sublime Text 3,没啥好说的,好用。
  • 代码补全 TernJS , Tern-Sublime ,是js下代码提示、补全的利器,极其推荐!
  • 错误检查 ESLint , SublimeLinter-ESLint 是一款js的静态检查、错误提示的利器,Sublime的插件也非常好用,配置很简单。

配上这三个,你就会觉得用起来已经蛮舒服了。

Nginx反向代理

nginx 搭建服务器的强大处之一就是它的代理能力,配置也十分简洁。

如果要模拟最终的请求的话,我们应该是原封不动的保留请求url: ‘www.desmond.com/api/something’。首先我们需要 在手机上设置代理,将ip配置到自己电脑上,端口配为80 。但是你的电脑识别到这个请求后,怎么让它导流到你的node服务器,这是一个问题。如果你代码写死的ip+端口来访问,未免有点太low了,我们既然折腾了这么多,那可以继续往下走一步: 反向代理 。

反向代理,简而言之,就是一个分发请求的代理。 前向代理 是直接发给目标服务器,但是它会做一些额外的处理工作。反向代理不一样,它自己相当于是一个服务器,请求到它手里,它根据请求去不同服务器上拉取数据。

1. 安装Nginx

Linux用户可以使用命令行:

apt-get update
apt-get install nginx

OSX用户可以用Homebrew:

brew install nginx

Windows用户可以 下载安装包

2. 配置代理

我们希望针对’www.desmond.com/api/something’下的url交由node服务器(2333端口)处理,其他情况下继续发送,可以在 nginx.conf 里面这么配置(可以在命令行下输入 nginx -t 找到配置文件位置):

server {
 listen 本机ip:80;
 server_name www.desmond.com;

 #charset koi8-r;

 access_log /Users/desmond/Nginx/api.access.log;
 error_log /Users/desmond/Nginx/api.error.log;

 location / { //默认情况原路继续
 resolver 8.8.8.8;
 proxy_pass http://$http_host$request_uri;
 proxy_set_header Host $http_host;
 proxy_connect_timeout 5;
 }

 location /api { //检测到api路径下的,转发到端口2333
 proxy_pass http://localhost:2333; 
 }

 #error_page 404 /404.html;

 # redirect server error pages to the static page /50x.html
 #
 error_page 500 502 503 504 /50x.html;
 location = /50x.html {
 root html;
 }

}

这里如果希望原路继续的那些url域名解析配合你的 host (此处使用 8.8.8.8 来做DNS解析),你可以参考 StackOverflow的一个提问 。

这样一来,你所有手机上访问的 www.desmond.com/api/something 就导到你的nodejs服务器上啦,尽情配置假数据来测试吧~~

原文  http://blog.desmondyao.com/2016/08/01/fake-server/
正文到此结束
Loading...