RESTful API 参数 URL-解码在哪里?
Where is RESTful API parameter URL-decoded?
我有一个基于 Spring 的 RESTful API 部署到 Tomcat 服务器。当我像下面这样调用 API ("para" 的值已经被 URL 编码)并调试它时,控制器方法中 "para" 的值是 "aaa bbb"已经 URL-解码。
但是,当我运行一个Spring基于启动的本地测试自动化案例(未部署在任何地方)来测试相同的API时,"para"的值在控制器方法中尚未 URL-解码。
问题是,这两种情况有什么区别,第一种情况"para" URL-解码在哪里?
希望我能为您的问题的第一部分提供提示:
Apache Tomcat server.xml
包含一个标签 Connector
,这个标签可以有一个可选属性 URIEncoding
。示例:
<Connector connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
URIEncoding="UTF-8" />
所以我认为 Tomcat 负责 URI 编码。但我不知道这是如何在 Embedded-Spring-Boot-Tomcat.
中激活的
- @见:How does URIEncoding = 'UTF-8' work?
- @见:Apache Tomcat 8 Configuration Reference / The HTTP Connector
我有一个基于 Spring 的 RESTful API 部署到 Tomcat 服务器。当我像下面这样调用 API ("para" 的值已经被 URL 编码)并调试它时,控制器方法中 "para" 的值是 "aaa bbb"已经 URL-解码。
但是,当我运行一个Spring基于启动的本地测试自动化案例(未部署在任何地方)来测试相同的API时,"para"的值在控制器方法中尚未 URL-解码。
问题是,这两种情况有什么区别,第一种情况"para" URL-解码在哪里?
希望我能为您的问题的第一部分提供提示:
Apache Tomcat server.xml
包含一个标签 Connector
,这个标签可以有一个可选属性 URIEncoding
。示例:
<Connector connectionTimeout="20000"
port="8080"
protocol="HTTP/1.1"
redirectPort="8443"
URIEncoding="UTF-8" />
所以我认为 Tomcat 负责 URI 编码。但我不知道这是如何在 Embedded-Spring-Boot-Tomcat.
中激活的- @见:How does URIEncoding = 'UTF-8' work?
- @见:Apache Tomcat 8 Configuration Reference / The HTTP Connector