Изменение сигнатуры метода контроллера Rest - PullRequest
0 голосов
/ 03 июня 2019

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

@GetMapping("/{id}")
public SomeData getData(@PathVariable("id") Long id, HttpServletRequest request){
    // do something with Long Id
}

Будет ли что-нибудь сломано (возможно, весной, при преобразовании данных REST), если я изменю аргумент Long на String:

@GetMapping("/{id}")
public SomeData getData(@PathVariable("id") String id, HttpServletRequest request){
    // Convert id to Long and do something with it
    ...................
}

при условии, что я обязательно конвертирую строку в тот тип, который мне нужен?

Ответы [ 2 ]

0 голосов
/ 03 июня 2019

Над кодом ничего не сломается. Сначала обратите внимание на URL-адрес. Например http://localhost:8080/test/123 В этом URL-адресе по умолчанию параметр path (123) имеет только строковый тип данных. Когда мы объединяем значение (123 или abc) со строкой, оно становится частью этой строки. Это означает, что 123 является строкой. Так что это не выдаст никакой ошибки. После этого только он будет проверять тип данных, который мы объявили в коде. Он попытается сделать приведение типа. Он выдаст исключение, если тип данных не соответствует.

0 голосов
/ 03 июня 2019

Ничего страшного, что не сломайте существующего клиента, так как они могут только отправить вам строку Long и любую строку Long, которую вам отправят, вы также можете преобразовать ее в объект String java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...