rest - 范围 API 的机制
问题描述
我有不同的用户,他们可能登录到用户界面并需要查看相同资源的不同视图。例如,一个家庭共享一个购物应用程序。当父母登录时,他们可以看到购物车中的所有内容。当孩子登录时,他们看不到购物车中的某些产品,而对于他们可以看到的产品,他们看不到某些属性(例如价格)。
因此,从资源的角度来看,如果我们希望父母和孩子有两种不同的购物车视图,一种方法是:
/parent/shoppingcart
和
/child/shoppingcart
另一种方法是:
/parent.shoppingcart
和
/child.shoppingcart
从 API / REST 角度来看,最佳实践是什么?
注意:我做不到,
/shoppingcartsummary
和 /shoppingcart
因为比父母和孩子的意见还要多。
解决方案
最佳实践可能是 /shoppingcart/parent 和 /shoppingcart/child。很确定如果你可以做“/parent/shoppingcart”,你可以做“/shoppingcart/parent”。
Shoppingcart 将是视图的通用/通用部分(以及控制器上的通用功能,例如检索产品列表以准备以某种方式显示它们或不显示它们)。基于授权级别,“父”或“子”子视图扩展了购物车并阐明了确切的表示。
当然只有父母可以访问/shoppingcart/parent。当然,父母也会有一个链接“以孩子的身份查看”来查看/shoppingcart/child。
特别重要的是,不要依赖客户端/浏览器直接指定它是什么,例如发送 Content-Type 来指定父级或子级。
推荐阅读
- asp.net - 使用 @Html.ActionLink 将组合框值从视图传递到控制器
- jquery - jQuery自动完成焦点多次触发
- java - DyanmoDB 查询以使用非分区键获取项目
- elasticsearch - 非零指标-FileBeat
- abap - 如何在不丢失逗号的情况下进行类型转换?
- java - 错误创建名为“ModelAccess”的 bean 自动装配依赖注入失败;无法自动装配字段
- json - Error: Browser auto increments number in json response
- kubernetes-helm - 为什么“{{.Release.namespace}}”呈现为空?
- ios - UIView翻转过渡与显示隐藏动画iOS
- python-3.x - 限制从网站上抓取的图像数量?