如何处理 URL(Spring、REST、CXF)中的转义字符(管道 |)?
Posted
技术标签:
【中文标题】如何处理 URL(Spring、REST、CXF)中的转义字符(管道 |)?【英文标题】:How to handle escape characters (pipe |) in URL (Spring, REST, CXF)? 【发布时间】:2014-03-23 08:17:00 【问题描述】:我正在使用 Spring、CXF、Tomcat 来开发 Web 服务。
在 URL 中发送竖线 (|) 等字符时遇到问题?
例如:
http://localhost:9080/address/v1/countries/\
|
抛出 500 错误,有没有办法处理它并抛出自定义错误代码,如 404 甚至 400?
我尝试在 tomcat 的 server.xml 中的连接器对象上设置 URIEncoding="UTF-8"。但它并没有解决它。
我还尝试在我的应用程序的 web.xml 中添加过滤器映射,如下所示:-
<filter>
<filter-name>encodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>encodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
有人能指出这些 URI 以何种方式返回自定义错误代码和消息吗?
【问题讨论】:
似乎下面的链接是一个相关线程***.com/questions/7176726/… 【参考方案1】:url 编码请参考here。假设你想发送 Sachin|Tendulkar。您可以发送为 Sachin%7CTendulkar。
【讨论】:
【参考方案2】:是的。 %7C 是需要在 URL 中使用的 PIPE 字符。 以下是我成功使用的另一个示例。在此邻域中,名称为“ROOT|RESTFUL”,表示为 ROOT%7CRESTFUL
http://localhost:8080/BAE_4_3_API/rest/v1/user/rahul1/neighborhood/ROOT%7CRESTFUL/collaboration/1000/whiteboard
【讨论】:
以上是关于如何处理 URL(Spring、REST、CXF)中的转义字符(管道 |)?的主要内容,如果未能解决你的问题,请参考以下文章
Spring Data REST CORS - 如何处理预检选项请求?
如何处理 django-rest-framework 中 url 模式中的外键关系
如何处理 Spring Rest Web 服务中的 JSON 解析错误
如何处理 grails spring-security-rest 插件中的自定义身份验证异常?
如何处理 Spring Rest API 上的内部服务器错误(500)以自定义消息?
如何处理 Spring Boot Rest 和 Jackson Deserializer 的 Javax 验证中的无效数字