Một quy ước dường như là dấu hai chấm (:) nhưng tôi là nhà phát triển web nên cá nhân tôi thích dấu gạch chéo (/) cho dấu phân cách. Dấu gạch chéo đã là dấu phân tách rất quan trọng trong các URL có nghĩa là Bộ định vị tài nguyên thống nhất, loại khóa cho tài nguyên. Tại sao phải thực hiện một cách tiếp cận khác với dấu hai chấm (:)? Nó có giúp được gì không?
Xem xét ví dụ này:
Chúng tôi có API RESTful cho các đối tượng đồ chơi. Có một:
http://example.com/api/toy/234
Nơi chúng tôi có nó được lưu trữ? Chúng tôi sử dụng Redis và dấu gạch chéo để chìa khóa rõ ràng:
toy/234
Đây là chìa khóa độc đáo cho đồ chơi. Khóa này hiện có thể được sử dụng ở phía máy khách:
{
key: "toy/234",
color: "red",
url: function () {
return API_BASE_URL + this.key;
}
}
Một người dùng yêu cầu một đối tượng với khóa toy/666
. Làm thế nào để có được nó từ Redis? Một ví dụ liên quan đến Node.js:
redis.get(key, function reply_callback(error, toystring) {
var toy = JSON.parse(toystring);
...
}
Không cần phải chuyển đổi dấu gạch chéo thành dấu hai chấm và ngược lại. Thuận tiện, bạn không nghĩ sao?
Lưu ý: luôn đảm bảo rằng người dùng chỉ có thể truy cập những thứ bạn dự định. Cách tiếp cận URL-to-key thô ở trên cũng có thể tìm nạp user/1/password
, như được lưu ý bởi các nhà bình luận. Đây không phải là vấn đề nếu bạn sử dụng Redis làm bộ đệm chỉ đọc công khai.
scan
không phải là tùy chọn @EranH., đó là cách tốt nhất để lặp lại các khóa.scan
được sử dụng để tăng dần qua một tập hợp các phần tử.