当前位置: 首页 > article >正文

利用Postman的简单运用解决小问题的过程

这几天在修改一个前后端分离的商城项目。项目前端向后端发出数据请求之后,收到的却是504网关超时错误。
在这里插入图片描述
但是控制台却不止报错了网关超时,还有跨域请求的问题:
在这里插入图片描述
根本搞不清是哪个问题导致了另外一个问题还是独立的两个问题。
直接点击网址访问又会因为没有权限报错:
在这里插入图片描述
这时候我想到了可以通过Postman进行模拟网络请求,从而查看后端返回数据。
Postman官网:https://www.getpostman.com/downloads/
下载之后直接双击打开,第一次需要用邮箱注册账号或者直接Google登录(不推荐,懂得都懂)。
登录过后页面:
在这里插入图片描述
这下可以直接向后端发送网络请求了。复制网址并输入,同时因为请求头带有Authorization,所以要在postman的Authorization中选择bearer token 并填入token值。此外,网页请求标头还带有tenantId,所以要在请求头上加上这部分。
在这里插入图片描述
(此处postman也显示504,但是无图)
因为postman发送请求时不会有跨域问题的,所以问题出在后端并不是因为跨域导致请求未送达至后端。
然后看了一眼后端的运行日志:
在这里插入图片描述
前端请求确实到达了后端,那么到底是哪里连接超时了呢?
这个前后端分离项目,后端不同的服务咋爱不同的端口上运行,那么是否请求真的到了对应的服务吗?用Postman向对应端口发送请求试一下:
在这里插入图片描述
这下又和前端报错不一样了,怎么回事呢?
突然想到,防火墙是不是没有允许访问这个端口?去服务器上看一看:
在这里插入图片描述
还真的没有开放端口。那么把防火墙关了试一下:
在这里插入图片描述
这下和日志里面报一样的错误了,看来也不是防火墙的问题。只能去源码上一点点做标记了。

    @Log("查询商品分类")
    @ApiOperation(value = "查询商品分类")
    @GetMapping(value = "/yxStoreCategory")
    @PreAuthorize("hasAnyAuthority('admin','YXSTORECATEGORY_ALL','YXSTORECATEGORY_SELECT')")
//    @ResponseBody
    public ResponseEntity getYxStoreCategorys(YxStoreCategoryQueryCriteria criteria, Pageable pageable){
        log.info("查询商品分类 进入方法测试");
        List<YxStoreCategoryDto> categoryDTOList = yxStoreCategoryService.queryAll(criteria);
        log.info(categoryDTOList.toString());
        log.info("查询商品分类 成功查询测试");
        return new ResponseEntity<>(yxStoreCategoryService.buildTree(categoryDTOList),HttpStatus.OK);
        //return new ResponseEntity<>("Hello World!",HttpStatus.OK);
    }

通过标记可以得知,直到返回之前所有执行都没有问题,向数据库发出请求也得到了回复数据。也不是ResponseEntity的问题。而且也有其他一小部分能正常从后端返回的数据。
在这里插入图片描述
去查看那些能正常返回的源代码,发现能够正常返回的方法上面都没有@Log注解。。。
尝试注释掉这个注解,发现后端能够正常返回数据了。/(ㄒoㄒ)/~~
又返回源代码看了一下,发现这个@Log注解是一个经过封装的注解,不是lombok自带的@Log注解。既然只是一个不影响主要功能的日志注解那么直接停用就行了,至于为什么会影响返回就不去考虑了。

经验教训:不如直接在代码中添加标记确认错误位置。本以为不是后端代码的问题,同时每次修改后端都要重新打包发布觉得麻烦却因此浪费了在其他方面寻找错误所用的时间。


http://www.kler.cn/a/287.html

相关文章:

  • 微信小程序获取后端数据
  • 设计模式 创建型 单例模式(Singleton Pattern)与 常见技术框架应用 解析
  • 网安数学基础期末复习
  • ASP.NET CORE 依赖注入的三种方式,分别是什么,使用场景
  • 解锁kafka组件安全性解决方案:打造全方位安全防线
  • ThinkPHP 8高效构建Web应用-控制器
  • 2023年中国高校计算机大赛-团队程序设计天梯赛(GPLT)上海理工大学校内选拔赛(同步赛) A — E
  • 蓝桥杯刷题第十天
  • 前端安全:如何保障 Web 应用程序的安全性?
  • leetcode刷题 | 关于前缀树的题型总结
  • 世界顶级五大女程序媛,不仅技术强还都是美女
  • 第十二届蓝桥杯省赛详解
  • 【Android -- 软技能】聊聊程序员的软技能
  • 从大专到测开,上海某字母站大厂的面试题,岗位是测开(25K*16)
  • 如何一眼分辨是C还是C++
  • 【JavaSE】类和对象的详解
  • 8大主流编程语言的适用领域,你可能选错了语言
  • linux目录/usr/lib/systemd/system目录详解
  • 前端小技巧
  • python flask项目打包成docker镜像发布
  • IO流之 File 类和字节流
  • 当我尝试问了chatGPT几个问题之后,我感到了危机......
  • STM32F1硬件SPI驱动nRF24L01通过按键控制数据收发带状态反馈
  • 宣布推出 .NET 社区工具包 8.1!
  • 【C++】模板(上)
  • Python学习笔记14:网络编程