Spring application/x-www-form-urlencoded防止字符串编码 &g



我们有一个@PostMapping,它是一个提供给第三方的webhook,当第三方发生事件时,它被调用。

@PostMapping(path = "/some-api", consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public void proessWebhook(@RequestBody String request) {

请求字符串键在String request中编码。对于我们的内部要求,我们需要在spring将其设置为String request变量时不预编码密钥。我们尝试URL解码变量,然而,问题是有我们不想解码的值,所以解码整个字符串解码键和值。

例如,如果在CURL请求中输入是some key=some%20value,那么请求变量将被设置为some%20key=some%20value。而我们只需要解码密钥。

最重要的是,参数的顺序也会随着输入而改变,因此保持顺序相同是很重要的。

我们该怎么做呢?

如果您的方法参数是MultiValueMap类型,您可以使用@RequestParam或@RequestBody注释将其与HTTP请求的主体适当地绑定。

@PostMapping(
path = "/some-api",
consumes = {MediaType.APPLICATION_FORM_URLENCODED_VALUE})
public ResponseEntity<String> funName(
@RequestParam MultiValueMap<String,String> paramMap) throws Exception {
}

相关内容

  • 没有找到相关文章

最新更新