REST numérico ou identificadores de recurso de cadeia de caracteres?

Eu estou fazendo algumas pesquisas para me ajudar a desenvolver uma API REST e este é um tópico que eu não vi discutido em profundidade em qualquer lugar.

Se eu tiver um usuário no sistema, é melhor identificar o usuário usando um identificador numérico

/ users / 1

Ou usando um identificador de string?

/ users / RSmith

Eu posso ver prós e contras potenciais hipotéticos em cada abordagem, identificadores de string são mais legíveis, menos detectáveis ​​(não podem ser incrementados para encontrar usuários válidos), e não requerem armazenar outro id numérico no banco de dados (eu não deseja expor os ids do banco de dados por meio da API). Os identificadores numéricos não têm significado inerente e, devido a isso, podem ser garantidos como imutáveis, enquanto que com um id de string, o usuário pode querer renomear o recurso, alterando assim o URI do recurso.

Existe uma melhor prática do REST aqui ou a melhor abordagem varia de sistema para sistema? Se este último, existem alguns prós e contras adicionais associados a cada método?

questionAnswers(2)

yourAnswerToTheQuestion