nginx+postman,一种mock后端接口的异常场景测试方案

简介: ### 背景说明 有时在调测前端,或者想要测试验证前端对于后端异常的兼容性时,如果直接让后端模拟异常返回可能比较麻烦,此时,一种mock后端返回的方案将有助于快速调测。 网上也有不少相关的方案,比如通过Charles断点也可以修改后端接口的响应报文,但是如果前端设置了超时时长,那么有可能还没来得及修改响应报文,前端就已经因超时而失败了。当然,网上也有一些其他的类似Chrome插件的方式,我

背景说明

有时在调测前端,或者想要测试验证前端对于后端异常的兼容性时,如果直接让后端模拟异常返回可能比较麻烦,此时,一种mock后端返回的方案将有助于快速调测。

网上也有不少相关的方案,比如通过Charles断点也可以修改后端接口的响应报文,但是如果前端设置了超时时长,那么有可能还没来得及修改响应报文,前端就已经因超时而失败了。当然,网上也有一些其他的类似Chrome插件的方式,我目前还没有试用过,如果其他同学有好的分享,也欢迎留言。

本次记录的Nginx+postman的方案,虽然配置有些复杂,但是一旦配置完成,使用起来还是非常方便的。该方案的示意图如下。

image.png
接下来详细介绍配置过程。

postman mock服务端接口

postman mock服务端接口的方式比较多,也可以参考前面的文章:
postman mock接口返回,这里只简要记录常见的一种,操作过程如下所示:
mock-creation-app-cnx.gif

  • 第一步:在postman主控制面板点击New按钮,然后选择“Mock Server”
  • 第二步:设置mock接口的方法、访问路径、返回码和响应报文,然后点击Next
  • 第三步:设置Mock Server名称,[可选]设置环境,然后点击“Create Mock Server”
  • 第四步:点击“Copy Mock URL”复制出mock url(这是访问mock接口url前缀,也可以在collections详情中查看)
  • 第五步:然后就可以拼接mock url和第二步设置的访问路径来发送请求检查mock结果了

设置了mock server之后,可能最常用的操作就是修改mock接口的返回报文,可以这样操作:

  • 第一步:在mock server下选择想要修改返回报文的request
  • 第二步:选择Examples中的default(或者新建一个Example也行)
  • 第三步:修改Example中的响应报文并Save Example

之后再访问mock接口,看到的就是新的响应报文了
image.png

image.png

本地安装和配置Nginx

安装Nginx

安装Nginx比较简单,这里只记录Mac下的安装:

brew install nginx

生成自签证书

如果后端接口是http请求,那么这一步可以省略;
如果是https请求,那么就需要生成和配置证书

  • 第一步:进入Nginx目录,并新建一个目录存放证书相关信息
cd /usr/local/etc/nginx
mkdir ssl
cd ssl
  • 第二步:创建服务器私钥
openssl genrsa -out server.key 1024
  • 第三步:生成证书申请
openssl req -new -key server.key -out server.csr

cp server.key server.key.org
openssl rsa -in server.key.org -out server.key
  • 第四步:生成签署文件
openssl x509 -req -in server.csr -out server.crt -signkey server.key -days 3650

配置Nginx

进入Nginx config目录,配置nginx.conf

cd /usr/local/etc/nginx
vim nginx.conf
  • http接口可以在server下面这样配置:
        listen       8080;
        server_name  www.xx.com; # 后端服务的域名

        #charset koi8-r;

        #access_log  logs/host.access.log  main;

        location / {               # 要转发的请求的路径
            root   html;
            index  index.html index.htm;
            proxy_pass http://315049fd-d7a2-4fff-ab56-48f4c73bbab0.mock.pstmn.io/test-mock;        # postman mock接口连接
        }
  • https接口可以在server下面这样配置:
        listen       443 ssl;
        server_name  www.xx.com; # 后端服务的域名

        ssl_certificate      /usr/local/etc/nginx/ssl/server.crt;
        ssl_certificate_key  /usr/local/etc/nginx/ssl/server.key;

        ssl_session_cache    shared:SSL:1m;
        ssl_session_timeout  5m;

        ssl_ciphers  HIGH:!aNULL:!MD5;
        ssl_prefer_server_ciphers  on;

        location /yyy {
            root   html;
            index  index.html index.htm;
            proxy_pass http://315049fd-d7a2-4fff-ab56-48f4c73bbab0.mock.pstmn.io/test-mock;        # postman mock接口连
        }

配置之后保存

启动Nginx

进入Nginx bin目录,启动Nginx。(Mac上安装之后可以直接在命令行输入nginx启动)

nginx

本地配置host

编辑hosts文件,新增一行配置,从而将本地到服务端接口的请求转发到nginx上,然后再由nginx转发请求到postman mock server。

vim /etc/hosts

新增一行并保存

# www.xx.com为服务端域名
127.0.0.1 www.xx.com

调试访问

在postman中调测

在postman中新建一个request,然后输入后端接口地址,模拟请求发送。此时可能会遇到下面的报错:“Error: self signed certificate”。

这时,可以在postman主控制面板,点击Postman > Preference打开postman设置界面,将General tab下面的“SSL certificate verification”设置为“OFF”

然后重新发送请求,检查是否为postman mock server的返回。
image.png

在浏览器中调测

浏览器直接访问前端时,可能会遇到上面一样的问题。后端接口报“net: ERR_CERT_INVALID”。

这时,可以直接在前端页面上输入“thisisunsafe”
image.png

或者浏览器新打开一个tab,访问服务端接口地址,然后会展示如下提示“您的连接不是私密连接”,然后同样的在该页面输入“thisisunsafe”
image.png
该问题的其他解决办法可以参考这位同学的总结:
https://segmentfault.com/a/1190000021843971

相关文章
|
4月前
|
应用服务中间件 Linux 网络安全
使用Nginx免费版与Keepalived实现高可用性High Availablity方案
本文介绍了如何使用Nginx免费版与Keepalived实现高可用性(HA)方案,涵盖环境搭建、Keepalived安装配置、版本升级及主从模式设置。通过虚拟机测试,结合CentOS与宝塔,详细说明VIP配置与服务启动流程,助你构建稳定可靠的Web高可用架构。
|
10月前
|
数据可视化 前端开发 测试技术
接口测试新选择:Postman替代方案全解析
在软件开发中,接口测试工具至关重要。Postman长期占据主导地位,但随着国产工具的崛起,越来越多开发者转向更适合中国市场的替代方案——Apifox。它不仅支持中英文切换、完全免费不限人数,还具备强大的可视化操作、自动生成文档和API调试功能,极大简化了开发流程。
|
6月前
|
存储 消息中间件 前端开发
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
校园圈子系统校园论坛小程序采用uni-app前端框架,支持多端运行,结合PHP后端(如ThinkPHP/Laravel),实现用户认证、社交关系管理、动态发布与实时聊天功能。前端通过组件化开发和uni.request与后端交互,后端提供RESTful API处理业务逻辑并存储数据于MySQL。同时引入Redis缓存热点数据,RabbitMQ处理异步任务,优化系统性能。核心功能包括JWT身份验证、好友系统、WebSocket实时聊天及活动管理,确保高效稳定的用户体验。
418 4
PHP后端与uni-app前端协同的校园圈子系统:校园社交场景的跨端开发实践
|
5月前
|
JSON 前端开发 应用服务中间件
配置Nginx根据IP地址进行流量限制以及返回JSON格式数据的方案
最后,记得在任何生产环境部署之前,进行透彻测试以确保一切运转如预期。遵循这些战术,守卫你的网络城堡不再是难题。
249 3
|
Java 测试技术 开发者
必学!Spring Boot 单元测试、Mock 与 TestContainer 的高效使用技巧
【10月更文挑战第18天】 在现代软件开发中,单元测试是保证代码质量的重要手段。Spring Boot提供了强大的测试支持,使得编写和运行测试变得更加简单和高效。本文将深入探讨Spring Boot的单元测试、Mock技术以及TestContainer的高效使用技巧,帮助开发者提升测试效率和代码质量。
1151 2
|
5月前
|
测试技术 Python
Python接口自动化测试中Mock服务的实施。
总结一下,Mock服务在接口自动化测试中的应用,可以让我们拥有更高的灵活度。而Python的 `unittest.mock`库为我们提供强大的支持。只要我们正确使用Mock服务,那么在任何情况下,无论是接口是否可用,都可以进行准确有效的测试。这样,就大大提高了自动化测试的稳定性和可靠性。
252 0
|
7月前
|
SQL 测试技术
除了postman还有什么接口测试工具
最好还是使用国内的接口测试软件,其实国内替换postman的软件有很多,这里我推荐使用yunedit-post这款接口测试工具来代替postman,因为它除了接口测试功能外,在动态参数的支持、后置处理执行sql语句等支持方面做得比较好。而且还有接口分享功能,可以生成接口文档给团队在线浏览。
325 2
|
9月前
|
JSON 前端开发 测试技术
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
664 10
大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
|
9月前
|
JSON 前端开发 API
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
491 5
以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
|
负载均衡 监控 应用服务中间件
配置Nginx反向代理时如何指定后端服务器的权重?
配置Nginx反向代理时如何指定后端服务器的权重?
542 61