Spring RESTful API参数URL在哪里解码?

Spring RESTful API参数URL在哪里解码?,spring,rest,urldecode,Spring,Rest,Urldecode,我有一个基于Spring的restfulapi,它被部署到Tomcat服务器上。当我像下面这样调用这个API(“para”的值已经过URL编码)并对其进行调试时,控制器方法中“para”的值是“aaa bbb”,它已经过URL解码 得到 然而,当我运行一个基于SpringBoot的本地测试自动化案例(没有部署到任何地方)来测试同一个API时,controller方法中的“para”值还没有被URL解码 问题是,这两个场景之间有什么区别?第一个场景中的“para”URL解码在哪里?希望我能为您

我有一个基于Spring的restfulapi,它被部署到Tomcat服务器上。当我像下面这样调用这个API(“para”的值已经过URL编码)并对其进行调试时,控制器方法中“para”的值是“aaa bbb”,它已经过URL解码

  • 得到
然而,当我运行一个基于SpringBoot的本地测试自动化案例(没有部署到任何地方)来测试同一个API时,controller方法中的“para”值还没有被URL解码


问题是,这两个场景之间有什么区别?第一个场景中的“para”URL解码在哪里?

希望我能为您的问题的第一部分提供一个提示:

ApacheTomcat
server.xml
包含一个标记
Connector
,该标记可以有一个可选属性
URIEncoding
。例如:

<Connector connectionTimeout="20000"
           port="8080"
           protocol="HTTP/1.1"
           redirectPort="8443"
           URIEncoding="UTF-8" />

所以我认为Tomcat负责URI编码。但我不知道这是如何在嵌入式Spring Boot Tomcat中激活的

  • @见:
  • @见:

    • 希望我能为你问题的第一部分提供一个提示:

      ApacheTomcat
      server.xml
      包含一个标记
      Connector
      ,该标记可以有一个可选属性
      URIEncoding
      。例如:

      <Connector connectionTimeout="20000"
                 port="8080"
                 protocol="HTTP/1.1"
                 redirectPort="8443"
                 URIEncoding="UTF-8" />
      
      
      
      所以我认为Tomcat负责URI编码。但我不知道这是如何在嵌入式Spring Boot Tomcat中激活的

      • @见:
      • @见:

      我在我的Tomcat server.xml中没有找到这样的属性。“如果没有指定,将使用UTF-8,除非org.apache.catalina.STRICT\u SERVLET\u COMPLIANCE system属性设置为true,在这种情况下将使用ISO-8859-1”,因此,“UTF-8”的默认属性不会在这里进行URL解码。我不知道实际的默认行为。但是我必须在一些旧的Tomcat版本中设置这个属性,并将其显式设置为UTF-8,以启用UTF-8编码。我没有在我的Tomcat server.xml中找到这样的属性。“如果没有指定,将使用UTF-8,除非org.apache.catalina.STRICT_SERVLET_COMPLIANCE system属性设置为true,在这种情况下将使用ISO-8859-1”,因此,默认属性“UTF-8”在这里进行URL解码。我不知道实际的默认行为。但是我必须在一些旧的Tomcat版本中显式地将这个属性设置为UTF-8,以启用UTF-8编码。