How to decode path parameters in All REST WebServices calls

太长;不读
TL:DR
如果有多个位置需要在WebServices RESTful调用期间解码参数,则可以使用springframework中的UrlPathHelper在中央位置执行此操作

想像在一个RESTful URL中有一个参数1,其中可能包含一些非URL友好字符,例如正斜杠/。您当然可以在每次调用时都去使用URLCodec()。decode(param1。但这不但麻烦且容易出错。

借助于springframework对URL Intercepor的支持,您可以扩展UrlPathHelper并覆盖encodePathVariables,这样就可以集中在一个地方进行所有此类操作。

以下是仅供参考的kotlinjava示例:

Kotlin

import org.apache.commons.codec.net.URLCodec
import org.springframework.web.util.UrlPathHelper
import javax.servlet.http.HttpServletRequestclass MyPathHelper : UrlPathHelper() {override fun decodePathVariables(request: HttpServletRequest, vars: MutableMap<String, String>): MutableMap<String, String> {val map = super.decodePathVariables(request, vars)map.computeIfPresent("param1") { _, v -> URLCodec().decode(v) }return map}
}

Java

import org.apache.commons.codec.DecoderException;
import org.apache.commons.codec.net.URLCodec;
import org.springframework.web.util.UrlPathHelper;import java.util.Map;public class  MyPathHelper extends UrlPathHelper {@Overridepublic Map<String, String> decodePathVariables(javax.servlet.http.HttpServletRequest request, Map<String, String> vars) {Map<String, String> map = super.decodePathVariables(request, vars);map.computeIfPresent("param1", (k,v) -> {try {return new URLCodec().decode(v);} catch (DecoderException e) {e.printStackTrace();}return v;});return map;}
}

期望这个对你有所帮助

--End--

java url解码_如何从REST WebService 调用中解码路径参数相关推荐

  1. java for update 无效_java.sql.BatchUpdateException:调用中的无效参数

    检查此循环. 这里,在i = 0的情况下,取出(0-1)为-1. 我们知道List提供了基于0的索引,所以你的str.get(..)应该从0开始,而不是从-1开始 试试这个 public void i ...

  2. java安装的时候无效参数_使用Oracle 11g时,保存数据时SQLException: 调用中的无效参数...

    背景与问题描述: 项目环境:jfinal:3.5,druid:1.0.29,oracle11g 驱动:ojdbc6.jar 项目开发完成时切换到Oracle 11g数据库时,某张表save的时候发生S ...

  3. java.lang.UnsupportedClassVersionError: JVMCFRE003解决方法--jdk 1.6 中switch的参数无法使用String类型

    java.lang.UnsupportedClassVersionError: JVMCFRE003解决方法--jdk 1.6 中switch的参数无法使用String类型 参考文章: (1)java ...

  4. java url参数转换:_提示:通过URL激活并发送参数

    java url参数转换: 世界上最安全的密码是不存在的密码. 使用完全随机的密钥从等式中删除用户. 公平地说,这有一些缺点,并且密码仍然存在于某处(在您的电话/电子邮件中),但通常这样效果很好... ...

  5. java 获取 海康 视频流_海康网络摄像机调用SDK解码Java版

    两个回调函数: FRealDataCallBack 实现预览回调数据 DecCallBack 解码回调函数 在HCNetSDK.java补充相关函数和结构声明 //播放库函数声明,PlayCtrl.d ...

  6. java 事件链_供应链攻击事件——针对Github中Java项目的定向攻击

    阅读: 1,446 前言 2020年5月28日,Github安全团队发表了文章称Github上存在一组代码仓库正在服务于感染了恶意代码的开源项目(https://securitylab.github. ...

  7. 火狐浏览器设置url编码_浅谈不同浏览器地址栏中编码的差异

    今天是上交学院专业 ,权当是娱乐而已,拿不拿奖就是另外一回事了.貌似这篇论文跟我的专业没什么必然的联系,倒是他们网工专业的刚好适合,但不知为什么写这类型的我就特别顺手... 摘要: 本文介绍了中文版本 ...

  8. mac电脑配置java环境变量_教你在Mac系统中配置JAVA环境变量的方法

    Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.下面向大家介绍Mac电脑上如何配置Java ...

  9. java input属性_如何在h:inputText中指定命令属性?

    我有一个函数,我在我的经理中derclare bean,我想在inputText中返回值,但是当我将函数的名称放在inputText标记的value属性中时,如下所示: 出现此错误: Etat HTT ...

  10. java绘制流程图_如何才能更好地绘制计算机毕业设计中各种图表

    " 毕设论文中的各种图表是不可或缺的,如果只是单纯的文字,或者图表较少,达不到要求的话,最终是通过不了答辩审核的!" 目前绘制图表的软件很多,比如VISIO等,切记尽量不要使用wo ...

最新文章

  1. 你动、蒙娜丽莎跟着一起动,OpenCV这么用,表情口型造假更难防了
  2. java中的IO操作总结(一)
  3. 一、“用黑色的眼睛寻找光明”
  4. 跨域解决请求限制(script标签)(热门搜索出现对应的词条)
  5. 华中农业大学2018考研真题之867-数据结构与算法
  6. Nuxt中如何使用Vuex-Store异步获取数据
  7. leetcode 703. 数据流中的第 K 大元素(堆)
  8. alidata mysql 卸载_mysql相关(一)、基本知识
  9. java实现面向对象编程_java实现面向对象编程
  10. SugarCRM 去掉 header 应用程序 下拉菜单
  11. [转帖]Windows7 结束更新 以及后期更新花费。
  12. 5G+北斗RTK定位:高精度定位技术发展更进一步
  13. 火山视频在一键去水印网站上解析教程,火山视频去水印教程
  14. 快手调整员工福利,​减少房补,增加生育津贴;百度网盘青春版正式上线,被吐槽;雷军回应小米对标苹果遭冷嘲热讽 | EA周报...
  15. Oracle的 alter table table_name nologging; 的使用
  16. 利用python爬取甲骨文图片及其对应的汉字含义,共1062个甲骨文,百度云下载
  17. 电脑右下角WIFI图标上出现的长方形白框
  18. OFD格式的电子发票文件怎么免费转换成PDF
  19. ThingsBoard 3.2.1 发布
  20. 进制转换--《十六进制》

热门文章

  1. 高斯过程和高斯过程回归
  2. 论文翻译 | ORB-SLAM3:一个用于视觉、视觉惯性和多地图SLAM系统
  3. Ubuntu16.04下PCL点云库的安装及使用demo
  4. 数值分析(9)-最小二乘法
  5. 违反学校防疫规定,这所211高校两研究生被通报批评!
  6. Centos下安装Mongodb
  7. 2013 多校联合(1)个人总结
  8. 第四十讲 ASP.NET消息处理(一)
  9. 【理财】【学校财务信息管理系统】一卡通网络金融化
  10. Python代码刷博客访问量