Bu konu hakkında düşünmenin temel yolu şudur:
Bir URI, bir kaynak TÜRÜ'nün belirli bir örneğini benzersiz şekilde tanımlayan bir kaynak tanımlayıcıdır. Hayattaki diğer her şey gibi, her nesne (bazı türlerin bir örneği olan), zamanla değişmeyen veya zamansal niteliklere sahiptir.
Yukarıdaki örnekte bir araba, marka, model ve VIN gibi niteliklere sahip - asla değişmeyen ve zamanla değişebilen renk, süspansiyon vb. Özelliklere sahip çok somut bir nesnedir. Dolayısıyla, URI'yi zaman içinde değişebilen özniteliklerle (zamansal) kodlarsak, aynı nesne için birden çok URI ile sonuçlanabilir:
GET /cars/honda/civic/coupe/{vin}/{color=red}
Ve yıllar sonra, bu aynı arabanın rengi siyaha dönerse:
GET /cars/honda/civic/coupe/{vin}/{color=black}
Araba örneğinin kendisinin (nesnenin) değişmediğini unutmayın - sadece değişen renktir. Aynı nesne örneğini gösteren birden çok URI'ye sahip olmak, sizi birden çok URI işleyicisi oluşturmaya zorlar - bu verimli bir tasarım değildir ve elbette sezgisel değildir.
Bu nedenle, URI yalnızca hiçbir zaman değişmeyecek ve ömrü boyunca bu kaynağı benzersiz şekilde tanımlamaya devam edecek parçalardan oluşmalıdır. Değişebilecek her şey, aşağıdaki gibi sorgu parametreleri için ayrılmalıdır:
GET /cars/honda/civic/coupe/{vin}?color={black}
Alt satır - polimorfizmi düşünün.