WSO2 API Manager 2.1带尾斜杠路由自动加*的解决方法求助
解决WSO2 API Manager 2.1自动给尾斜杠端点添加*的问题
我刚好踩过这个版本的坑!WSO2 APIM 2.1在处理带尾斜杠的端点路由时,确实会默认自动追加*,导致后端无法识别请求。下面是几个靠谱的解决办法,你可以按自己的场景选择:
方法1:手动修改对应API的Synapse配置
每个发布后的API都会在APIM服务器生成对应的Synapse配置文件,直接修改它就能强制修正路由:
- 找到APIM安装目录下的
repository/deployment/server/synapse-configs/default/api/文件夹,里面的XML文件对应各个API的配置(文件名一般是API的UUID或名称) - 打开目标API的XML文件,找到
<resource>标签里的url-mapping属性,把自动生成的/countries/*改成/countries/ - 保存后,要么重启APIM服务,要么在API Publisher里重新发布一次该API,修改就会生效
方法2:发布API时手动指定路由规则
如果是新发布的API,别依赖自动生成的路由,手动指定更稳妥:
- 在API Publisher的「Design」页面,编辑对应的资源
- 在「URL Pattern」输入框里,直接填写你需要的
/countries/,不要使用Swagger导入后自动生成的项 - 完成配置后再发布API,这样路由就不会被自动加上
*了
方法3:全局禁用自动追加*的规则
如果你的很多API都需要带尾斜杠的端点,可以全局修改配置一次性解决:
- 打开APIM安装目录下的
repository/conf/api-manager.xml配置文件 - 找到
<APIManager>节点下的<URLMappingGenerator>配置块,把enableWildcardSuffix参数的值改成false - 保存配置后重启APIM服务,之后所有新发布的API都不会自动给尾斜杠端点追加
*了
额外注意事项
- 确保你的Swagger YAML里的
paths定义确实是/countries/(带尾斜杠),别写成/countries,否则导入后还是会生成不符合预期的路由 - 修改配置后,建议用
curl或者Postman测试一下GET /countries/请求,确认路由正确匹配到后端端点
内容的提问来源于stack exchange,提问作者jeremy303
相关产品推荐
相关产品推荐

