rest资源设计_REST资源何时应获得其自己的地址?
rest资源设计
在纯粹的REST方法中,所有端点(起始端点除外)都是不透明的,因此不需要发布其各种详细信息。 即使使用这种方法,本文中的要点也很重要,因为服务器逻辑将必须确定何时需要结束点。
介绍
在REST体系结构中,实体或资源( 对于本文的其余部分将使用术语“实体”)可能具有也可能没有其自己的地址。 例如,假设我们有一个库存应用程序,供商人用来销售其产品。 立即可以看到一个产品实体。 它的URL类似于:/ product / {id}
现在,销售产品的商人可以将自己的评论添加到产品中。 例如, ”
“ 星期五 卖得 很好 ”或“ 如果产品没有开始销售,请考虑更改价格 ”。 一个产品可以有0 .. *注释。 如前所述,产品具有自己的地址:/ product / {id},例如/ product / 1231233
和这样的响应负载
{"id":"1231233","type":"Beer","comments": [{"id":"1","comment":"Sells very well on Fridays" }, {"id":"2","comment":"Consider changing price if product doesn't start selling" }]}
可以看出,有效负载返回Comment对象的集合。 每个评论都应该有自己的地址,还是可以将它们嵌入产品响应中? 为了帮助回答这个问题,应考虑以下内容。
实体在包含实体上下文之外是否有任何意义?
如果实体(例如注释)在其包含的实体(例如产品)之外具有含义,则它们应具有自己的地址。 例如,假设实体是学生,并且学生返回了他/她所学习的大学列表。 这些大学在学生之外具有自己的含义。 因此,显然大学应该有自己的地址。 在“活动/注释”业务情景中,“注释”仅针对活动存在。 没有其他实体会引用它们或需要引用它们。 因此,需要考虑其他方面。
是否需要对单个实体执行操作?
是否应该允许客户端创建,读取,更新或删除单个实体? 这些必须分开考虑。
写:创建,更新,删除
在产品/评论场景中,永远不会在产品外部或没有产品的情况下创建评论。 它实际上是添加到产品中的。 这可以视为对产品的部分更新。 但是,对现有注释的更新或删除也可以视为产品的部分更新。 这会造成如何使用产品的部分更新来区分创建/更新和删除注释的复杂性。 如果需要这样做,则为注释创建上下文地址(指示产品/注释的层次结构性质)然后允许客户向其发送POST,PUT,PATCH,DELETES会更简单。
范例网址:/ product / 1231233 / comment / 1
读
在某些情况下,包含父实体的实体可能不会返回有关子实体的所有信息。 例如,再次考虑产品–>评论场景。 假设评论很大。 这意味着产品的有效载荷也非常大。 在这种情况下,对于产品而言,仅返回评论摘要,如果客户希望完整的实体提出单个请求,则可能更为谨慎。 同样,如果要获得一个单独的实体会付出巨大的性能成本(例如,必须调用第三方API来获取有关注释的所有信息),那么将URL链接发送给实体(而不是而不是实际实体的内容。
N + 1问题
如果需要单独读取,请注意不要引入N + 1问题。 例如,假设一个产品可能有100条注释。 如果客户需要所有信息,Product API将仅返回Comment的摘要以及指向每个评论的链接。 但是,如果客户端希望每一个注释,则意味着现在将有100个HTTP请求。 如果这是一种潜在的情况,则应考虑将所有评论汇总到产品中的辅助端点。 这类似于API网关模式。
端点表面积
在任何发布合同的体系结构中,如果合同太多,开发人员就很难理解。 大多数知名的API(例如PayPal,Amazon,Twitter,Google)通常只有大约20至30个地址。 这是一个好目标。 如果有5,000个不同的地址,它可能会变得太大而难以控制等。
总之,决策图提供了有关您应该做什么的指南。
翻译自: https://www.javacodegeeks.com/2018/01/rest-resource-get-address.html
rest资源设计
rest资源设计_REST资源何时应获得其自己的地址?相关推荐
- 计算机技术应用读书心得,《多媒体环境下的教学设计和资源的应用》读书心得体会...
<多媒体环境下的教学设计和资源的应用>读书心得体会 五天的培训很快就结束了.在五天的培训中,我们认识了信息学校的老师们,为他们认真的工作态度.高涨的工作热情所打动,最关键的是我们从中学到了 ...
- 团队协作新趋势:语雀——助力更多:个人、企业、博客、协作、托管、画布设计、资源托管(立体化趋势)
团队协作 · 业务模式 · 新趋势: 语雀:个人.企业.博客.协作.托管.画布设计.资源托管(立体化趋势) 博主自留地,请勿瞎踩 官方文档: 语雀官方入口:https://www.yuque.com/ ...
- 50个精美的 PSD 用户界面素材和设计模板资源
对于每一个网页设计师来说,有预先设计好的和可编辑的UI元素是组织和优化工作流程的关键.这些元素可以让你快速制作出风格统一的网页原型.今天,本文与大家分享50个精美的PSD资源,包含UI元素模板.表单. ...
- 权限设计(资源权限和数据权限)
2019独角兽企业重金招聘Python工程师标准>>> 权限设计(资源权限和数据权限) 贴下自己的码云地址 https://gitee.com/imbobo_bo/angel-bo ...
- 简谈FPGA设计中不同设计方法资源消耗对比
简谈FPGA设计中不同设计方法资源消耗对比 今天和大侠简单聊一聊FPGA设计中不同设计方法硬件资源消耗对比,话不多说,上货. 在这里,我们使用Verilog HDL 设计计数器,通过两种不同的写法,对 ...
- 移动APP设计国外资源总汇
目前,对于刚入行移动APP视觉或者交互设计的学习的你来说,一些好的设计辅助工具,一些素材下载,优秀网站设计网站,数据抓取和分析的小助手都是必不可少的.今天主要介绍的都是国外上的一些设计工具的下载,素材 ...
- HTML数字化教学资源平台,网页设计与制作教学课件作者HTML+CSS+JavaScript张洪斌教学资源数字化教学资源平台网站布局课件.doc...
网页设计与制作教学课件作者HTML+CSS+JavaScript张洪斌教学资源数字化教学资源平台网站布局课件.doc 11.3 实例1:数字化教学资源平台网站布局 11.3.1效果图的分析与切片 本实 ...
- java毕业生设计学习资源下载管理计算机源码+系统+mysql+调试部署+lw
java毕业生设计学习资源下载管理计算机源码+系统+mysql+调试部署+lw java毕业生设计学习资源下载管理计算机源码+系统+mysql+调试部署+lw 本源码技术栈: 项目架构:B/S架构 开 ...
- UI设计素材资源网站推荐
和大家分享一些优秀的UI设计.素材网站,互联网/移动互联网工作者必备资源! 网页UI设计PSD资源站大集合 ikeepu.com/list/61360 国内外200+设计类网站大搜罗- ikeepu. ...
最新文章
- IDC机房运行安全评测怎么做,自建IDC机房评测材料准备要点
- 港科大陈凯、杨强教授新书重磅发布,系统揭秘隐私计算 | 文末送书
- centos 单用户登陆模式操作
- php如何防止重复提交表单,如何防止php重复提交表单方法
- 刘德华2007新歌《一》歌词及在线试听地址
- windows10(专业版和家庭版)---禁止自动更新系统
- 计算机恶搞bat代码,电脑重启bat代码怎么设置 电脑整人bat代码大全
- Aop切面自定义注解的使用
- SYN重要知识点总结
- CSS实现图片层闪光效果
- vue 获取当前本机ip_vue中获取本地ip
- QT 获取键盘组合键
- caffe学习之conver_imageset.bin的使用方法,caffe下图片转lmdb格式类型数据总结
- 敏捷项目如何保证测试质量
- 一个安全的邮件习惯如何练成的
- Vue3+Vite+TypeScript项目开发
- 苹果电池显示维修_苹果新款 iPhone SE 屏幕维修、电池更换多少钱?
- zcmu-5066: 黑暗长廊
- 小红书运营模式是怎样的?弄清楚小红书底层逻辑
- 如何在线压缩图片大小?图片上传太大怎么缩小?