MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Existem razões pelas quais eu deveria/não deveria usar ObjectId's em meus URLs RESTful


Tendo usado ObjectId s em APIs RESTful várias vezes, a maior desvantagem é realmente que elas são muito barulhentas em termos de ter uma URL limpa. Você o deixará como um número HEX ou o converterá em um número inteiro muito grande, ambos criando um URL um tanto hostil:
/rest/resource/52435dbecb970072ec3a780f
/rest/resource/25459211534898951476729247759

Eu adicionei um "título" ao URL (como o StackOverflow faz) para torná-los um pouco mais amigáveis:
    /rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName

Claro, o "título" é ignorado no software, mas o usuário o vê e pode ignorar mentalmente o segmento de ID maluco.

Há muito pouco útil que pode ser aprendido com a infraestrutura, expondo-os:
  1. Carimbo de data e hora
  2. ID da máquina
  3. ID do processo
  4. Valor de incremento aleatório

Além de coletar potencialmente IDs de máquina (o que geralmente indicaria o número de clientes criando ObjectId s), não há muito lá.

ObjectId s não são aleatórios, então você não pode usá-los para segurança. Você sempre precisará proteger os dados. Embora eles possam não aumentar de maneira óbvia, seria fácil encontrar outros recursos por meio da força bruta. No entanto, se você estava usando IDs de incremento automático antes, esse não é um problema novo para você.

Se você sabe que não está criando muitos documentos novos em um determinado momento, pode valer a pena usar um dos padrões aqui para criar um ID mais simples. Em um aplicativo que escrevi, usei uma técnica de auto-inc para alguns dos IDs de documentos mostrados em URLs e, para aqueles que eram somente Ajax, usei ObjectId s. Eu realmente queria que alguns URLs fossem facilmente "digitados". Nenhuma forma de um ObjectId é facilmente digitado por um usuário final. Esse é um dos pontos fortes do MongoDB -- que você pode usar qualquer _id formato que você deseja. :)