为了账号安全,请及时绑定邮箱和手机立即绑定

使用 Feign @RequestLine 添加 decodeSlash

使用 Feign @RequestLine 添加 decodeSlash

撒科打诨 2021-12-22 15:22:18
我目前正在使用 YAML 文件来生成模型和使用 swagger 插件的 API 客户端,我正在使用 Feign OkHttpClient 向 API 发出请求,这里的问题是客户端对 URL 进行编码,但忽略了斜线(es) API 调用失败。有没有办法decodeSlash在客户端添加参数?或者这可以使用拦截器来实现吗?这是我遇到此问题的示例路径参数。QgKuK2DU/0%3D它应该在哪里QgKuK2DU%2F0%3D
查看完整描述

2 回答

?
梦里花落0921

TA贡献1772条经验 获得超6个赞

如果您使用openapi-generator,您可以自己修改模板(也在此处描述)以添加decodeSlash参数:


git clone https://github.com/openapitools/openapi-generator

cd openapi-generator

git checkout v4.2.0 # The Version Tag you are actually using

cd modules/openapi-generator/src/main/resources/Java/libraries/feign/

cp api.mustache <your_local_project>/src/main/resources/Java/libraries/feign

在api.mustache改变 2 外观@RequestLine:


- @RequestLine("{{httpMethod}} {{{path}}}{{#hasQueryParams}}?{{/hasQueryParams}}{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")

+ @RequestLine(value="{{httpMethod}} {{{path}}}{{#hasQueryParams}}?{{/hasQueryParams}}{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}", decodeSlash = false)


- @RequestLine("{{httpMethod}} {{{path}}}?{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}")

+ @RequestLine(value="{{httpMethod}} {{{path}}}?{{#queryParams}}{{baseName}}={{=<% %>=}}{<%paramName%>}<%={{ }}=%>{{#hasMore}}&{{/hasMore}}{{/queryParams}}", decodeSlash = false)

使用openapi-generator-maven-plugin添加templateDirectory到<configuration>块:


<templateDirectory>src/main/resources/Java/libraries/feign</templateDirectory>


查看完整回答
反对 回复 2021-12-22
?
慕少森

TA贡献2019条经验 获得超9个赞

decodeSlash只能通过@RequestLine注解设置。如果您无权访问注释,则需要uri使用RequestInterceptor.


查看完整回答
反对 回复 2021-12-22
  • 2 回答
  • 0 关注
  • 554 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号