Konwencja wydaje się być dwukropkiem (:), ale jestem programistą, więc osobiście wolę ukośnik (/) jako separator. Slash jest już tak ważnym separatorem w adresach URL, które mają być jednolitymi lokalizatorami zasobów, więc są kluczem do zasobów. Dlaczego warto stosować inne podejście do jelita grubego (:)? Czy to coś pomaga?
Rozważ ten przykład:
Mamy interfejs API RESTful dla obiektów zabawkowych. Jest jeden:
http://example.com/api/toy/234
Gdzie go przechowujemy? Używamy Redis i ukośników, więc klucz jest oczywisty:
toy/234
To unikalny klucz do zabawki. Klucza można teraz używać także po stronie klienta:
{
key: "toy/234",
color: "red",
url: function () {
return API_BASE_URL + this.key;
}
}
Użytkownik żąda obiektu z kluczem toy/666
. Jak zdobyć od Redis? Przykład związany z Node.js:
redis.get(key, function reply_callback(error, toystring) {
var toy = JSON.parse(toystring);
...
}
Nie trzeba konwertować ukośników na dwukropki i odwrotnie. Wygodne, nie sądzisz?
Uwaga: zawsze upewnij się, że użytkownik może uzyskać dostęp tylko do tego, co zamierzyłeś. Podane powyżej surowe podejście URL-to-key jest również w stanie pobrać user/1/password
, jak zauważyli komentatorzy. Nie powinno to stanowić problemu, jeśli używasz Redis jako publicznej pamięci podręcznej tylko do odczytu.
scan
nie jest opcją @EranH., najlepszą praktyką jest iterowanie kluczy.scan
służy do stopniowego iterowania kolekcji elementów.