如何在 Postman 中使用 Request 参数进行 Get Request

How to make Get Request with Request param in Postman

我创建了一个在其请求参数中接受字符串的端点

@GetMapping(value = "/validate")
    private void validateExpression(@RequestParam(value = "expression") String expression) {
        System.out.println(expression);
        // code to validate the input string
    }

邮递员发送请求时

https://localhost:8443/validate?expression=Y07607=Curr_month:Y07606/Curr_month:Y07608 

// 可以说这是一个有效的输入 控制台显示为

Y07607=Curr_month:Y07606/Curr_month:Y07608 Valid

但是当我发送

https://localhost:8443/validate?expression=Y07607=Curr_month:Y07606+Curr_month:Y07608

//这也是一个有效的输入 控制台显示为

Y07607=Curr_month:Y07606 Curr_month:Y07608 Invalid

我不明白为什么不接受“+”作为参数。

"+" 消失直到到达 api!为什么?

我建议将此正则表达式添加到您的代码中以处理“+”字符:

@GetMapping(value = "/validate")
    private void validateExpression(@RequestParam(value = "expression:.+") String expression) {
        System.out.println(expression);
        // code to validate the input string
    }

我没有找到任何解决方案,但原因是因为 + 是 space 的 URL 转义符中的特殊字符。这就是为什么它将 + 替换为“”,即 space.

显然我必须从我的前端对其进行编码

在URL中编码特殊字符是明智的。 \: 等字符。 对于 +,格式或值是 %2。您可以阅读有关 URL 编码 here 的更多信息。这实际上是首选方法,因为这些特殊字符有时会导致意外事件的发生,例如 /=,这可能意味着 URL.

中的其他内容

而且您不必担心在后端或服务器中手动解码它,因为在大多数情况下和框架中,它会自动解码。在您的情况下,我假设您使用的是 Spring Boot,因此您无需担心解码问题。