MongoDB
 sql >> Baza danych >  >> NoSQL >> MongoDB

Czy są jakieś powody, dla których powinienem/nie powinienem używać ObjectId w moim adresie URL RESTful

Po użyciu ObjectId s w RESTful API kilka razy, największą wadą jest to, że są one bardzo hałaśliwe, jeśli chodzi o posiadanie czystego adresu URL. Zostawisz go jako liczbę HEX lub przekonwertujesz na bardzo dużą liczbę całkowitą, co spowoduje nieco nieprzyjazny adres URL:

/rest/resource/52435dbecb970072ec3a780f
/rest/resource/25459211534898951476729247759

Dodałem „tytuł” ​​do adresu URL (tak jak robi to StackOverflow), aby uczynić go nieco bardziej przyjaznym:

    /rest/resource/52435dbecb970072ec3a780f/FriendlyResourceName

Oczywiście „tytuł” ​​jest ignorowany w oprogramowaniu, ale użytkownik go widzi i może mentalnie zignorować szalony segment ID.

Z infrastruktury można się nauczyć bardzo niewiele, wystawiając je:

  1. sygnatura czasowa
  2. Identyfikator maszyny
  3. Identyfikator procesu
  4. Losowo rosnąca wartość

Inne niż potencjalne zbieranie identyfikatorów komputerów (które ogólnie wskazują liczbę klientów tworzących ObjectId s), nie ma tam zbyt wiele.

ObjectId s nie są losowe, więc nie można ich użyć dla bezpieczeństwa. Zawsze będziesz musiał zabezpieczyć dane. Chociaż mogą nie zwiększać się w oczywisty sposób, łatwo byłoby znaleźć inne zasoby za pomocą brutalnej siły. Jeśli jednak używałeś wcześniej identyfikatorów z automatyczną inkrementacją, nie jest to dla Ciebie nowy problem.

Jeśli wiesz, że w danym momencie nie tworzysz wielu nowych dokumentów, warto użyć jednego z dostępnych tutaj wzorców, aby utworzyć prostszy identyfikator. W jednej z aplikacji, które napisałem, użyłem techniki auto-inc dla niektórych identyfikatorów dokumentów, które były wyświetlane w adresach URL, a dla tych, które były tylko Ajax, użyłem ObjectId s. Naprawdę chciałem, aby niektóre adresy URL można było łatwo „wpisać”. Brak formy ObjectId jest łatwo wpisywany przez użytkownika końcowego. To jedna z mocnych stron MongoDB — możesz użyć dowolnego _id żądany format. :)



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Aplikacja podobna do Twittera korzystająca z MongoDB

  2. Co mam wybrać:MongoDB/Cassandra/Redis/CouchDB?

  3. Meteor i DBRefs

  4. Jak przekonwertować widok MongoDB na kolekcję

  5. Utwórz unikalne pole autoinkrementacji z mangustą