Я ищу способ создать несколько сериализаторов json для моей сущности. Я создал служебный слой, пользовательские серилизаторы, и теперь у меня проблема с реализацией этих вещей. Мой класс обслуживания выглядит так:
@Service
class TeamsService(@Autowired private val teamsRepository: TeamsRepository) : ITeamsService{
override fun findAll(): String? {
var objectMapper = ObjectMapper()
var simpleModule = SimpleModule()
simpleModule.addSerializer(Teams::class.java, TeamsSerializer())
objectMapper.registerModule(simpleModule)
return objectMapper.writeValueAsString(teamsRepository.findAll())
}
}
И мой контроллер выглядит так:
@RestController
@RequestMapping("/v1")
class MainController(@Autowired private val teamsService: TeamsService) {
@GetMapping("/teams")
fun teams(): String? = teamsService.findAll()
}
Теперь у меня проблема с тем, что мой ответ потерял все заголовки и отображается как текст / обычный, а не текст / json, как это было до того, как я добавил настраиваемый сопоставитель. Я читал о проекциях, но не уверен, стоит ли их использовать. Я не хочу, чтобы в моем URL были параметры запроса.
Разный json для разных конечных точек.
Я хочу получить в ответ определенные поля от моих сущностей. На двух конечных точках мне нужно вернуть разные данные.
Я нашел решение. Лучший способ сделать это - использовать библиотеку ModelMapper. Вы можете просто сопоставить сущность с пользовательскими классами и сериализовать
Чего бы вы хотели достичь с помощью нескольких сериализаторов? Динамическая фильтрация?