【发布时间】:2021-10-27 15:37:08
【问题描述】:
我们有一个@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。而我们只需要解码密钥。
除此之外,参数的顺序也会随着输入的变化而变化,重要的是顺序必须相同。
我们该怎么做?
【问题讨论】:
-
你试过
@RequestBody MultiValueMap<String, String>params` 吗?
标签: java spring spring-boot spring-mvc