Как я могу передать значение с символом '/' в качестве параметра get моему контроллеру? - PullRequest
0 голосов
/ 04 июля 2019

У меня есть контроллер:

@RestController
public class MyController {

    @GetMapping(value = "/products/{value}")
    public String get(@PathVariable String value) {
        System.out.println(value);
        return "OK";
    }
}

После запуска сервера я пытаюсь отправить сообщение вроде этого:

http://localhost:8080/products/Mazda

и вижу в консоли Mazda .Но когда я отправляю значение с обратной косой чертой:

http://localhost:8080/products/Mazda\6

я получаю сообщение об ошибке:

Это приложение не имеет явного сопоставления для / error, поэтому вы видите это как запасной вариант.

Как передать значение с символом '\' в качестве параметра get моему контроллеру?

Я ожидаю: Mazda \ 6

1 Ответ

0 голосов
/ 04 июля 2019

Во-первых, вам нужно закодировать переменную пути на стороне клиента.Вот пример для Java:

URLEncoder.encode("Mazda\\6", "UTF-8");

Результат будет Mazda%5C6.Второй шаг - разрешить обработку запросов , содержащих специальные символы в своих URL.

В-третьих, декодируйте строку в контроллере:

String decodedValue = URLDecoder.decode(value, "UTF-8");
...