当前位置: 首页 > 知识库问答 >
问题:

uri参数中带有斜线的Rest模板

柯唯
2023-03-14

我正在使用resttemplate执行REST调用,并且我有一个包含斜杠(即20/20)的uriparam

String urlExample="www.nowhere.com/?variable={variable}";
String variable = URLEncoder.encode( "20/20", java.nio.charset.StandardCharsets.UTF_8.toString() );

Map< String, String > uriVariables = new HashMap<>();
 uriVariables.put( "variable", variable );

restTemplate.exchange( urlExample, HttpMethod.GET, new HttpEntity<>, String.class, uriVariables );

>

  • 如果我不执行httpEncoder,我将获得一个rest调用:http://www.nowhere.com/?variable=20/20,值变量gets仅为20。

    如果我执行httpEncoder,变量的值是%2f(它是正确的,这是我想要的值),但是当我执行其余的调用时,它会调用:http://www.nowhere.com/?variable=20%252f20。

    似乎RestTemplate编码为HttpEncoding%到%25,它中断了我的调用。有可能避免这种编码?

    已解决:

    如果指示restTemplate使用URI而不是字符串,restTemplate将避免编码。

    对于使用params构建uri,最好的方法是使用UriComponentsBuilder,指示uri实际上编码在build()param中。

  • 共有1个答案

    文英达
    2023-03-14

    测试处理程序尝试以下逻辑,可以是“www.nowhere.com/a/b/c”,您将使用以下机制获得整个值。

    requestedUri = (String) 
    request.getAttribute(HandlerMapping.PATH_WITHIN_HANDLER_MAPPING_ATTRIBUTE);
    
     类似资料:
    • 问题内容: 我有一个提供文件列表的应用程序。 应用程序必须响应以下路由: 这是没有指定路径的路由,例如目录。我在想类似的东西显然不起作用。 如何定义一个响应所有示例的路线? 问题答案: 使用(注意尾随星号)。 完整的例子

    • 问题内容: 我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常带有 斜线 。我无法控制用户在URL中输入的内容,因此我想获取他输入的内容,然后我就可以对其进行处理。 我已经在这里浏览过材料和答案,我认为对我而言,好的解决方案不是要求用户以某种方式对输入的参数进行编码。 SpringBoot代码很简单: 因此,URL如下所示: 问题在于,参数 modu

    • 我必须在SpringBoot应用程序中使用@PathValiable从URL获取参数。这些参数通常有斜线。我没有一个关于用户将输入URL的控制,所以我想要得到他输入的内容,然后我可以处理它。 我已经看过了这里的资料和答案,我不认为对我来说,好的解决方案是要求用户以某种方式编码输入参数。

    • 问题内容: 斜线在这里是什么意思: 问题答案: 这实际上设置了两个属性,并且等效于: 该属性的语法基于传统的印刷速记符号来设置与字体相关的多个属性。 正如David M在评论中所说,它反映了将字体大小指定为“ x pt on y pt”以表示行高的字形大小的排版传统。 但是问题中的示例实际上是错误的,浏览器将忽略它:您只能以简写形式组合这两个属性,并且 必须 至少指定字体大小和字体。因此,仅仅写作

    • 我有一个Spring控制器,其中有几个用于不同URI的RequestMapping。我的servlet是“UI”。servlet的基本URI只使用尾随斜杠。我希望我的用户不必输入尾随斜杠。 此URI的工作方式是:

    • 我是REST API和JSON的新手,我有一个初学者的问题。我试图使用的API根据以下模式请求参数: 请求参数示例如下: 但是,当我试图使用SoapUI和Postman测试这个API时,我只看到参数的键值对,我不知道如何在病人对象中嵌套ID和类型: SoapUI参数 邮递员参数