分享 使用 Nginx 和 json-server 搭建测试服务器

shellfly · 2015年11月01日 · 最后由 pobing 回复于 2015年11月03日 · 4642 次阅读

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

json-server

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

原文:使用 Nginx 和 json-server 搭建测试服务器

json-server 需要维护,修改一下的成本略高,作为 app 开发者,最好是不需要关心这些,我写了一个 app 开发者自己随意更新 response 的小工具,你可以试下,http://test.yangxing.me

@yangxing_star css 乱了,好像还没写完?

@shellfly 截图我看看?我这里没乱啊

@shellfly 样式没写好,简单改了下

json-server 不错,我们在协作的的 API 没开发完成时用,挺不错的

需要 登录 后方可回复, 如果你还没有账号请 注册新账号