#java #spring-boot #spring-restcontroller #spring-rest
#java #весенняя загрузка #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);
}
Но я получаю это значение : !!!!!!!!!!!!!! ! unique_id [24q376c3ts2kh3o3220rry322dfe2k7y]
.
Есть ли способ удалить []
из строки без классического String result = str.substring(0, index) str.substring(index 1);
?
Есть ли способ получить значения?
Я использую это для публикации значений:
Комментарии:
1. Предоставляете ли вы
unique_id
в виде списка при вызове этой конечной точки?2. Нет, я отправляю его как
application/x-www-form-urlencoded
Ответ №1:
Если вы всегда предоставляете только одно значение для unique_id
, вы можете вместо get
этого использовать getFirst
which
Возвращает первое значение для данного ключа
Ваш код будет выглядеть следующим образом:
String unique_id = String.valueOf(keyValuePairs.getFirst("unique_id"));
Помните, что этот метод фактически возвращает первое значение для указанного ключа или null
, если оно не найдено.
В случае, если вы отправляете более одного значения, вам необходимо обработать их как коллекцию. Например:
Collection<String> unique_ids = keyValuePairs.get("unique_id");
После этого вы можете делать со всеми идентификаторами по своему усмотрению, например, печатать их:
unique_ids.stream().forEach(System.out:println);
Комментарии:
1. В случае, если я отправлю 2 ключа unique_id 2 раза? Что я могу сделать, чтобы предотвратить проблему с кодом?
Ответ №2:
Многозначная карта — это интерфейс, наследующий карту, и вы можете видеть полученный объект в виде списка
public interface MultivaluedMap<K,V> extends Map<K,List<V>>
Затем вы можете сделать это и получить первый элемент списка:
String unique_id = String.valueOf(keyValuePairs.getFirst("unique_id"));