Feign怎么利用自定义注解实现路径转义


本篇内容主要讲解“Feign怎么利用自定义注解实现路径转义”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Feign怎么利用自定义注解实现路径转义”吧!近期由于项目中需要,所以需要通过Feign封装一个对Harbor操作的sdk信息。在调用的过程中发现,当请求参数中带有”/”时,Feign默认会将”/”当成路径去解析,而不是当成完整的一个参数解析,实例如下请求路径为:api/v2.0/projects/{projectName}/repositories注解参数为:@PathVariable(“projectName”)正常请求为:api/v2.0/projects/test/repositories异常路径为:api/v2.0/projects/test/pro/repositories相信细心的同学已经发现上面的差异了,正常的{projectName}中对应的值为test,而异常的却对应为test/pro,所以当异常的请求打到harbor的机器时,被解析为api/v2.0/projects/test/pro/reposito免费云主机域名ries,所以会直接返回404以上就是背景了,所以接下来我们讨论一下解决方案首先我们知道springboot中默认是带有几种注释参数处理器的因为我们的请求参数是在路径中的,所以默认我们会使用@PathVariableParameterProcessor来标识路径参数,而我们需要转义的参数其实也是在路径中,所以我们先来看一下@PathVariableParameterProcessor是如何实现的其实在源码中,springboot并没有做什么神器的事情,就是获取使用了PathVariable注解的参数,然后再将其添加到fromParams中就可以。看到这里我们是不是可以想到,既然在这里我们可以拿到对应的参数了,那想做什么事情不都是由我们自己来决定了,接下来说干就干,首先我们声明一个属于自己的注解,Defaultsto{@codetrue},leadingtoanexceptionbeingthrownifthepath
*variableismissingintheincomingrequest.Switchthisto{@codefalse}if
*youprefera{@codenull}orJava8{@codejava.util.Optional}inthiscase.
*e.g.ona{@codeModelAttribute}methodwhichservesfordifferentrequests.
*@since4.3.3
*/
booleanrequired()defaulttrue;
}声明完注解后,我们就需要来自定义自己的参数解析器了,首先继承AnnotatedParameterProcessor可以看到上面的代码,我们获取到自定义注解的参数后,将当前参数添加打Param后,并且为当前参数指定自定义的编码格式。最后,我们再通过Bean的形式将对应的注解添加到容器中最后我们将上面的参数注解PathVariable换成我们自定义的@SlashPathVariable,就大功告成了到此,相信大家对“Feign怎么利用自定义注解实现路径转义”有了更深的了解,不妨来实际操作一番吧!这里是百云主机网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

相关推荐: 如何用GitHub Actions自动部署Laravel项目

本篇内容介绍了“如何用GitHub Actions自动部署Laravel项目”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!我是一个部署在 VPS 上的 Lara…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 03/16 15:22
下一篇 03/16 15:23

相关推荐