如何在春天从rest url获取包含问号(?)的参数

时间:2017-08-24 20:14:04

标签: java rest url

我需要从url获取字符串"?"但是控制器不接受"?"

我需要发送类似" Hello world?" 但我只得到了#34; Hello world"

我找到点(。)的解决方案 - 值=" {textToTransform:。+}"

@RestController
@RequestMapping(textTransformCtrl.BASE_URI)
public class textTransformCtrl {

    @Autowired
    private TextTransformatorService textTransformatorService;

    public static final String BASE_URI = "transform/text";

    @RequestMapping(value = "{textToTransform:.+}")
    public String getText(@PathVariable final String textToTransform) {

        return textTransformatorService.transformText(textToTransform);
    }
}

2 个答案:

答案 0 :(得分:1)

问号是URL中的保留字符。它指示查询字符串的开始位置。

如果要将?作为参数值发送并且能够在服务器端读取它,则必须对其进行URL编码。

进行网址编码后,Hello world?变为Hello+world%3F

答案 1 :(得分:0)

您可以使用%3F手动编码或查看UriBuilder