Olá Thiago,
Tem um tópico parecido aqui: https://cursos.alura.com.br/forum/topico-duvida-na-atualizacao-de-medico-put-263262
A prática de passar o ID pela URL é comum em APIs REST, mas não há uma regra que exige que o ID seja sempre passado pela URL ou pelo corpo da requisição.
Passar o ID pela URL pode ser útil em casos em que você precisa acessar um recurso específico, como "/medicos/1" para acessar o médico com ID 1. Além disso, o uso do @PathVariable
permite que você recupere o ID facilmente e execute as operações necessárias.
Passar o ID pelo corpo da requisição também é uma opção viável, especialmente se você estiver trabalhando com objetos mais complexos que possuem muitos atributos e não quer sobrecarregar a URL com muitos parâmetros.
Quanto ao uso de BeanUtils ou ModelMapper, é importante lembrar que essas bibliotecas podem ser úteis para copiar os dados de um objeto para outro, mas é necessário ter cuidado ao manipular IDs. Se você estiver usando uma biblioteca como essa para copiar os dados, é importante garantir que o ID não seja copiado juntamente com os outros atributos, para evitar problemas como a mudança de ID dentro de uma transação.
Espero ter ajudado e bons estudos!