Используйте две конечные точки: одну с устаревшим API и одну для новой. В устаревшем API преобразуйте устаревшие параметры в новые, вызовите свою внутреннюю службу, преобразуйте ответ в устаревший ответ.
Позже, после того, как все клиенты мигрировали в новый API, или после предварительно определенного периода миграции, вы можете решите удалить устаревшую конечную точку.
Обновление
Для клиентов, которые не могут (или еще не хотят) использовать измененный API, укажите конечную точку, которая реализует старый API. Этот метод может выглядеть следующим образом:
@GetMapping(path = "/oldapi/...")
public Page<MyBean> getBeans(
@RequestParam(required = false) final String blah,
@RequestParam(value = "pageSize", required = false) Integer pageSize,
@RequestParam(value = "pageNum", required = false) Integer pageNum,
@RequestParam(value = "sort", required = false)
) {
// Create Pageable object from request parameters
...
// Call service or repository with this pageable
...
}
В этом методе вы можете использовать любые имена параметров. Для тех, кому нужны старые имена, вы можете оставить старые имена.
Для количества конечных точек: я имел в виду ровно 2 конечных точки: одну, чьи имена API остаются неизменными, а другую, которая изменяется (вы написали У меня недавно был запрос на переименование ... )
Обновление 2
Хороший способ поддержки 2 версии API - использовать 2 конечные точки . Если вы хотите предоставить 2 API через одну конечную точку, это может привести к ошибкам. В простых случаях это возможно. Например, вы определяете свой метод следующим образом:
@GetMapping(path = "/oldapi/...")
public Page<MyBean> getBeans(
@RequestParam(value = "size", required = false) Integer size,
@RequestParam(value = "pageSize", required = false) Integer pageSize,
@RequestParam(value = "page", required = false) Integer page,
@RequestParam(value = "pageIndex", required = false) Integer pageIndex,
...
) {
Integer pSize = pageSize != null ? pageSize : size;
Integer pIndex = pageIndex != null ? pageIndex : page;
...
}
Хранение такого кода может быть довольно сложным. Например, если некоторые параметры являются обязательными, сложно и ошибочно реализовать их в одной конечной точке, но очень легко, если у вас есть 2 разные конечные точки. Я отговариваю вас использовать такой подход.
Мое предложение: Для тех, кто хочет использовать устаревший API, предоставьте отдельную конечную точку. Им не нужно менять свой код, нужно только изменить параметр конфигурации, чтобы он указывал на конечную точку с устаревшим API. Это нормальная цена для них, если они все еще хотят использовать устаревший API.