我有可能登录到UI的不同用户,需要查看相同资源的不同视图。因此,例如,一个家庭共享一个购物应用程序。父母登录后,他们可以看到购物车中的所有内容。当孩子登录时,他们在购物车中看不到某些产品,而他们看到的产品也看不到某些属性(例如价格)。
因此,从资源的角度来看,如果我们希望父母和孩子对购物车有两个不同的视图,那么一种实现方法是:
/parent/shoppingcart
和
/child/shoppingcart
另一种方式是:
/parent.shoppingcart
和
/child.shoppingcart
从API / REST角度来看,最佳实践是什么?
注意:我做不到,
/shoppingcartsummary
和 / shoppingcart
因为观看次数比父母和孩子还要多。
谢谢
答案 0 :(得分:3)
最佳做法可能是/ shoppingcart / parent和/ shoppingcart / child。可以肯定,如果您可以执行“ / parent / shoppingcart”,则可以执行“ / shoppingcart / parent”。
购物车将是视图的公共/通用部分(在控制器上,是公共功能,例如检索产品列表以准备以某种方式显示它们)。根据授权级别,“父”或“子”子视图扩展了购物车并阐明了确切的表示形式。
当然,只有父母可以访问/ shoppingcart / parent。父母当然也会有一个链接“查看为孩子”以查看/ shoppingcart / child。
特别重要的是,不要依赖客户端/浏览器直接指定它的含义,例如,发送Content-Type来指定父或子。
答案 1 :(得分:0)
您只有一种资源,> cat some.pdf
name type encoding emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
TimesNewRoman TrueType WinAnsi no no no 36 0
TimesNewRoman,Bold TrueType WinAnsi no no no 38 0
EDMFMD+Symbol CID TrueType Identity-H yes yes yes 41 0
Arial TrueType WinAnsi no no no 43 0
Arial,Bold TrueType WinAnsi no no no 16 0
> perl -lane ' $enc=@F==9? $F[3]:$F[2]; print "$enc\t\t$F[-3]" ' some.pdf
encoding uni
---------------- ---
WinAnsi no
WinAnsi no
Identity-H yes
WinAnsi no
WinAnsi no
>
。您具有该资源的多个表示-一个用于父母,一个用于孩子,等等。您可以保留一个端点(用于资源),并使用带有自定义内容类型的/shopping-cart
标头,例如Accept
,以指定该资源的所需表示形式。