从 MultiValueMap 获取值

Pet*_*zov 6 java spring-boot spring-restcontroller spring-rest

我使用以下代码从 HTTP 请求获取值:

@PostMapping(consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE, value = "/v1/notification")
  public ResponseEntity<String> handleNotifications(@RequestBody MultiValueMap<String, Object> keyValuePairs) {

    LOGGER.debug("handleFormMessage");
    LOGGER.debug("keyValuePairs: {}", keyValuePairs);

    String unique_id = String.valueOf(keyValuePairs.get("unique_id"));

    System.out.println("!!!!!!!!!!!!!! ! unique_id " + unique_id);
}
Run Code Online (Sandbox Code Playgroud)

但我得到这个值:!!!!!!!!!!!!!! ! unique_id [24q376c3ts2kh3o3220rry322dfe2k7y]

[]有没有办法在没有经典的情况下从字符串中删除String result = str.substring(0, index) + str.substring(index+1);

有没有办法获取值?

我用它来发布值:

在此输入图像描述

lea*_*iro 5

如果您始终只为提供一个值unique_id,则可以get使用getFirstwhich而不是

返回给定键的第一个值

你的代码会像这样:

String unique_id = String.valueOf(keyValuePairs.getFirst("unique_id"));
Run Code Online (Sandbox Code Playgroud)

请记住,此方法实际上返回指定键的第一个值,或者null如果没有找到则返回。


如果您发送多个值,您需要将它们视为Collection。例如:

Collection<String> unique_ids = keyValuePairs.get("unique_id");
Run Code Online (Sandbox Code Playgroud)

之后,您可以根据需要处理所有 id,例如,打印它们:

unique_ids.stream().forEach(System.out:println);
Run Code Online (Sandbox Code Playgroud)