【狂神说Java】一小时掌握Swagger技术

作者: 遇见狂神说分类: 计算机技术 发布时间: 2019-08-22 13:52:36 浏览:294070 次

【狂神说Java】一小时掌握Swagger技术

于星空弹奏:
引入swagger包会空指针的,可以在配置文件中输入 spring.mvc.pathmatch.matching-strategy=ANT_PATH_MATCHER 解决

【回复】我的springboot2.7.9的,用了你的方法没问题了。永远爱你!!!!!
【回复】Springboot2.6以后将SpringMVC 默认路径匹配策略从AntPathMatcher 更改为PathPatternParser Springfox 使用的路径匹配是基于AntPathMatcher的,而Spring Boot 2.6.X使用的是PathPatternMatcher
积分大霸王:
有的人白嫖学完了还说这个不好那个不好,线上逼逼赖赖,线下一碰拉稀,这种人我现实一拳一个,我丢

【回复】确实,从springboot里面一堆弹幕都这样,说什么讲的快讲的烂听不懂,那还不是你自己之前的不好好学没打好基础,然后就是一遇到点问题就必需得老师给你解决,自己又不去查不去思考,就等着喂饭到你嘴边是吧,这种人还学啥啊,抓紧时间找个厂上班得了
叫我淡定君Official:
踩个坑:2.6.1 的 springboot 不支持 2.9.2 的 swagger 配置,报空指针错误。 解决办法:降低springboot版本或者升级swagger版本。

【回复】Springboot2.6.x以上的避免空指针异常,在启动类加注解@EnableWebMvc 访问接口文档页面404的,可以配置一个实现WebMvcConfigurer的类 @Configuration public class WebMVCConfig implements WebMvcConfigurer { @Override public void addResourceHandlers(ResourceHandlerRegistry registry) { registry.addResourceHandler("/**").addResourceLocations("classpath:/static/"); /** * 配置swagger-ui显示文档 */ registry.addResourceHandler("swagger-ui.html") .addResourceLocations("classpath:/META-INF/resources/"); registry.addResourceHandler("/webjars/**") .addResourceLocations("classpath:/META-INF/resources/webjars/"); } }
【回复】springboot2.5.6支持2.9.2swagger
【回复】回复 @没个破名怎活 :真的是太感谢了,网上查了两天没解决的现在这里直接解决了,太棒了[doge]
陌白陌白:
想在这里挂一个疑惑的点,是在启动时就报null,感觉像是对象没注入的问题,如下 @ApiOperation("这是输出user的方法") @PostMapping(value = "/user") public String user(@ApiParam("用户对象") User user){ return user.getUsername()+","+user.getPassword(); } 1.这是controller层,排查结果:Post和Get、返回类型、在SwaggerConfig/HelloController注入User的Bean均会启动时报Null错。 引起原因: 因为在视频里面最后返回user的时候,突发奇想,如果我通过swagger想获取传递过去的user对象的值,然后又回调回来,在视频里面user类中并未写get、set方法,所以我加入get、set方法,结果就是报null。 在Post下解决方案: 给形参加上@requestBody,前端传递json数据,swagger-ui可以发送json字符串。 至于Get下目前没想到好办法,学艺不精,请评论区大佬解释下为什么给实体类User加上get、set之后,启动报null,感谢。[呲牙]

【回复】回复 @没个破名怎活 :谢你吉言,然而这么久过去,很惭愧,已经是条咸鱼了[灵魂出窍]
【回复】[妙啊]@RequestBody是用来接收请求体消息json的,Post才有请求体,而Get没有,Get你可以用路径参数然后@PathVariable接收[妙啊]好吧,这么多年了,你都是大佬了
【回复】回复 @rongdog :那个就是springboot的入口呀,一个项目只有唯一的main函数
hhhhhh粑粑:
springboot 版本2.6 的不要用, 用2.5.7的 不然不管用哪个版本都会报空指针

【回复】老哥牛逼[大笑],我tm卡了三四天终于解决了!
令狐匆:
SpringBoot用swagger很简单。 有没有普通的SSM的配置的。我遇到swagger各种出错的

【回复】已解决,mvc 中需要加入 <bean class="com.hogen.config.SwaggerConfig"></bean> <mvc:default-servlet-handler/> <!-- 根据profile配置不同的location,就可以在生产环境中禁用Swagger --> <mvc:resources mapping="swagger-ui.html" location="classpath:/META-INF/resources/"/> <mvc:resources mapping="/webjars/**" location="classpath:/META-INF/resources/webjars/"/> 另外如果页面显示异常。 可以尝试清理下缓存。或者打开浏览器开发者模式。 NETWORK 勾选disablecache 也许对大家有帮助
【回复】回复 @令狐匆 :太感谢了、、、
【回复】回复 @寂夜无痕 :嗯嗯,好的谢谢 我现在是大二在学这个
可乐小奶蛋:
公司的前后端分离不是用token来验证码,狂老师能专门出一集讲解吗

hbuhui:
再补充一下 你有没有可能设置了网页黑名单 我就是这样的 注释了即可

大佬们好啊哈:
swagger 2.9.2 版本的 跟 springboot 2.6.0 版本的会冲突,把springboot改为 2.5.6版本就好

_Faith_-:
出现嵌套问题Failed to start bean 'documentationPluginsBootstrapper'; nested exception is java.lang.NullPointerException

【回复】pom.xml文件里面查看springboot版本,如果是2.6的不管用什么版本的swagger都会报错,修改成2.5.7的就能正常运行了
【回复】回复 @恍若隔世iii :spring boot版本,只能用2.6.0以下,不包括2.6.0,完美运行[doge]
【回复】回复 @拽丫头ㅅ :spring boot版本,只能用2.6.0以下,不包括2.6.0,完美运行[doge]
柳桥风起:
如果用的是2.10.5的swagger,访问http://localhost:8080/swagger-ui.html的时候会无限出现弹窗,需要给pom.xml额外添加一个依赖,同时注解变为@EnableSwagger2WebMvc <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.10.5</version> </dependency> <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.10.5</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-spring-webmvc</artifactId> <version>2.10.5</version> </dependency>

委屈的土豆:
每一个让我有收获的视频我都会投币,狂神是拿我硬币最多的

sernyinj:
建议学不懂的先找个springboot或者spring项目(推荐狂神开源项目,让他先跑起来),然后找swaggerConfig这个文件,你再把狂神的视频对着看一遍就懂了,这种脱离了项目就感觉听的云里雾里的

北小药:
最后返回的Response body 里面的massage是空字符串

驴家阿凡提:
主意大坑:实体类的属性不能是public,需要定义成private,不然只要你在接口里用到了实体类做形参,立马给你报空指针异常。

【回复】有句话叫“属性私有化,方法公有化”,类属性不要写成public,基本都是private。定义get/set方法就是配合private的
【回复】实体类一般都是private 为什么要public

SpringBoot2 SpringBoot最新版 SpringBoot实战 Swagger2 Swagger教程 Java Java教程 Swagger SpringBoot 前后端分离

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!