移动测试基础 使用 Nginx 和 json-server 搭建测试服务器

恒温 · 2015年11月01日 · 最后由 思寒_seveniruby 回复于 2015年11月01日 · 1447 次阅读

zz from http://shellfly.org/blog/2015/10/31/build-a-test-server-by-nginx-and-json-server/

App 开发时经常需要构造数据测试各种逻辑,最直接的办法时直接请求一个拥有和线上环境一样数据的测试服务器,可以随时改掉用户数据的各种状态,方便测试,不过这就需要维护一个独立的测试服务器,修改数据也不是很方便。而且往往在开发时,需要修改可能只是很少的一部分,如果可以指定自己想要修改的 API 对应的返回数据,其他 API 还是正常请求线上环境,这样测试起来会方便很多。

json-server

json-server 是一个快速可以构造假数据的 REST API 服务器,他的文档很全,需要注意的是,他只接受 json 格式的请求,在用 Postman 这种工具测试 POST 和 PUT 这种方法时,需要设置 Content-Type 为 application/json。

只有 json-server 还不够,json-server 里面只是我们想要 mock 的数据,当收到其他请求时,我们希望可以 fallback 到线上的环境去请求数据,这时候就需要 Nginx 出场。

Nginx

Nginx 的一大功能就是用来做反向代理, 我们需要搭建一个 HTTP 服务器,他会先请求 json-server,如果有对应的结果,就直接返回,否则就 fallback 到线上的环境去请求数据。

配置文件:

upstream apps {
    server localhost:3000;
    server example.com backup;
}

server {
    listen       80;
    server_name  local.example.com;

location / {
    proxy_pass http://apps;
    proxy_next_upstream error timeout http_404;
    proxy_set_header Host example.com;
}

线上的环境需要设置成 backup,这样请求过来时总是先请求本地的 json-server,如果 json-server 返回了 404,则继续请求线上的环境。本地的 server name 需要和线上的环境在同一个 Domain 下面,这样才能共享 cookie。

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 1 条回复 时间 点赞

测试利器 Nginx 再现.
nginx 的 proxy_cache 功能不知道是不是也保存的是静态文件. 如果可以缓存普通的 json 文件. 那么 nginx 就可以满足这种测试场景了

proxy_cache_path /data/nginx/cache keys_zone=cache_zone:10m;

map $request_method $purge_method {
    PURGE   1;
    default 0;
}

server {
    ...
    location / {
        proxy_pass http://backend;
        proxy_cache cache_zone;
        proxy_cache_key $uri;
        proxy_cache_purge $purge_method;
    }
}

http://weizhifeng.net/nginx-proxy-cache.html

黑水 treafik 试用记录 中提及了此贴 01月09日 21:16
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册