xiaoymin / knife4j

Knife4j is a set of Swagger2 and OpenAPI3 All-in-one enhancement solution
https://doc.xiaominfo.com
Apache License 2.0
4.15k stars 622 forks source link

openapi 3.0 版本前端自动拼接的地址与后端实际接口地址不匹配,导致请求404 #628

Open tntfyf opened 1 year ago

tntfyf commented 1 year ago

环境信息 JDK 1.8 spring boot 2.7.14 knife4j-openapi3-spring-boot-starter 4.2.0

问题复现条件: 需要在application.yml中增加如下配置,

Spring配置

spring: mvc: static-path-pattern: /static/**

开发环境配置

server: port: 8080 servlet:

应用的访问路径

context-path: /api

问题原因说明: 由于doc.html属于静态文件,所以访问时需要加上http://ip:port/api/static/doc.html , 由于openapi 3.0规范没有basePath,所以前端截取了当前URI作为basePath:/api/static。但是后端地址前缀是/api。页面自动拼接后的接口地址是http://ip:port/api/static/order/v1/domainLogicalProcessing/{orderId} ,此地址访问404, 正确的地址应该是http://ip:port/api/order/v1/domainLogicalProcessing/{orderId} 。

404 图片 请求成功 图片

creekmoon commented 11 months ago

+1同样 我们部署上去后经过网关带前缀就无法正常使用了. 但同样的情况在V2版本是正常的,不需要额外配置任何东西.