it-swarm-eu.dev

Návrh URI pro vztah mnoho k mnoha: je třeba poradit

Uvízl jsem při navrhování URI pro vztah mezi mnoha uživateli a jinými zdroji. Konkrétně mám potíže předvídat důsledky různých přístupů.

Vzhledem k typům zdrojů user a widget (user představuje registrovaného uživatele), ověřovaní (přihlášeni) uživatelé mají přístup pro zápis ke všem widgetům a hosté mají přístup pro čtení. Vztah mezi uživatelem a widgetem má také data (např. Počet úprav), která by v ideálním případě měla být také čitelná (tedy adresovatelná ) hosty (a - - jak podotýká Lèse níže , ostatní uživatelé). Příklady používají celá čísla pro jedinečné identifikátory kvůli přehlednosti.

Hosté si mohou prohlédnout widget č. 12 na adrese

/widgets/12

Jaké jsou důsledky různých možných URI pro autentizovaného uživatele # 34 pro čtení/zápis widgetu # 12, a volitelně pro hosta, aby si mohl přečíst relační data mezi nimi? (Nedělejte si starosti s úplnou odpovědí, jakákoli pozorování k nebo proti konkrétním možnostem by byla také velmi cenná).

/widgets/12

(uživatel je implicitní na základě autentizace, žádný způsob, jak pro hosta určit vztah mezi uživatelem a widgetem)

/users/34/widgets/12

(obě strany vztahu explicitní, implicitní hierarchie mezi zdroji)

/users/34/widgets/12 and /widgets/12/users/34

(stejné, bez hierarchie)

/user-widget/34,12

(vztah jako zdroj, explicitní, ale možná více, než uživatel potřebuje vědět)


Jsem rád, že mohu poskytnout více podrobností nebo přidat návrhy URI ostatních lidí. Stačí, když chcete, abych něco přidal.

4
Ian Mackinnon

Adresa URL pro přístup k widgetu by měla být stejná pro všechny. Řízení toho, co se má zobrazit nebo jaké schopnosti má uživatel, závisí na ID uživatele, které by se mohlo zachovat například v proměnné relace.

Když se tedy widget/12 načte, měla by vaše webová stránka zkontrolovat, kdo je uživatelské jméno v proměnné relace, zjistit, jaká jsou jejich oprávnění, a pak byste stránku naformátovali na základě těchto oprávnění.

3
milesmeow

Jak formulář /widgets/12 umožňuje hostům číst widgety - nebo umožňuje uživatelům číst widgety jiných uživatelů? Nebo plánujete implementaci více formulářů?

Osobně bych udělal něco jako:

/widget/id:12/user:665
/widget/12/665
/widget/12?user=665

Nakonec však na URL nezáleží, pokud se nejedná o něco, k čemu by uživatelé chtěli přistupovat přímo. Pokud se jedná pouze o místo pro vložitelný skript, zdroj dat nebo nějaký jiný typ služby, můžete použít libovolnou adresu URL, v takovém případě bych prostě chtěl použít něco jako:

/widget?id=12&uid=665

pravit:
Dávám přednost právě obsluhující widget pod /widget, protože to je zdroj. Předpokládám, že vztah mezi uživatelem a widgetem je odvozen od typu widgetu, kterým je. Přidání users do hierarchie cesty tedy není nutné.

Nyní, pokud chcete, aby lidé mohli procházet widgety konkrétního uživatele, byl by vhodnější formulář /users/34/widgets/12.

2
Lèse majesté

Pokud jde o ověřování, nepředal bych ji vůbec přes URL. Co mi brání v tom, abych změnil ID uživatele v URL a získal povolení, která nemám?

0
GSto