rest和rest ful_还有更多REST技巧

rest和rest ful

在以前的博客文章中,我介绍了一些实现REST体系结构的想法和技巧。 在这篇文章中,我将介绍更多的想法和技巧。

快取

  • 缓存是原始论文的很大一部分。 见5.1.4节
  • 策略包括验证( 客户端检查它是否具有最新版本 )和过期( 客户端认为它具有最新版本直到指定时间 )。
  • 到期日:
    • Expires标头告诉客户端资源何时到期。
    • 缓存控制
  • 验证方式
    • Etag –资源的唯一版本。

控制器API

  • 当某些东西完全适合CRUD操作时,请考虑使用Controller API

处理日期

  • 使用ISO-8601作为日期-更好地进行自然排序,处理时区,语言环境中的语言以及大多数编程语言的支持
  • 接受任何时区,因为世界上任何人都可以调用您的API
  • 存储在UTC中 ,而不是服务器所在的时区中。 持续时不应有偏移。
  • 返回UTC。 允许客户根据需要调整其时区
  • 如果您不需要时间,请不要使用。 如果仅日期就足够,则仅保留日期。 这意味着时区复杂性将消失。

  • HEAD操作应返回响应头

标头

  • 始终返回有用的标题。 考虑:
    • 内容类型

超媒体(优势)

  • 减少耦合
  • 链接的格式一致=>更干净的客户端代码
  • 开发人员的生产力:API更易于浏览
  • 更轻松地以更精细的方式介绍服务
  • 代码更易于调试-消息始终具有通过自我链接创建消息的URL

超媒体(选择)

  • HAL –减少地址耦合
  • SIREN –减少地址和动作的耦合
  • Collection + JSON (CJ)–减少地址,动作和对象的耦合

幂等

  • 可以多次调用并返回相同结果
  • OPTIONS,GET,HEAD,PUT和DELETE都是幂等的

长时间运行的请求

  • 某些操作需要很长时间。 在这种情况下,请考虑返回位置字段设置为URL的202,客户端可以轮询该URL以检查操作进度。

不允许的方法

  • 如果API仅支持GET,则对于任何PUT,POST,DELETE等都应返回405

必须忽略原则

  • 客户端应该忽略他们不感​​兴趣的数据。这使得API向后兼容变得更加容易。 如果API返回了额外的数据,而某些客户端并不期望它们,他们将忽略它。

不能接受的

  • 当资源不支持特定的媒体类型时,当无法提供所请求的媒体类型时,必须返回406( 参见Masse,规则:406(“不可接受”))

选件

  • 选项应返回资源上可用的操作

部分更新

  • 使用PATCH处理部分更新

询问

  • URI的查询组件应用于过滤集合

资源创造

  • 成功创建资源后,应返回201
  • 位置标头应指示获取资源的URL。

安全

  • 如果操作不修改资源,则被认为是安全的
  • 选项,GET和HEAD是安全的

自我链接

  • 响应正文应始终包含一个自我链接-用于返回资源的URL。

单数还是复数?

  • 对于单文档类型资源,请使用单数-当只能有一个时。 例如:/ humans / 12343343 / head
  • 否则复数

翻译自: https://www.javacodegeeks.com/2018/05/and-some-more-rest-tips.html

rest和rest ful

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/333358.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html实心圆点特殊符号,和平精英名称添加圆点符号的方法 和平精英圆点符号代码分享...

和平精英怎么在名字中添加圆点符号呢?昵称中是可以加入圆点符号的,很多小伙伴们都想要一个性一点的名字,那么就可以用到各种各样的特殊符号,圆点符号复制的代码小编已经分享到下面了,有需要这个圆点符号的玩家快带走吧…

Java包装类和基本数据类型的对照

int --> Integer byte --> Byte short --> Short long --> Long boolean --> Boolean char --> Character double --> Double float --> Float 注:基本类型自动转换成对应的包装类型,叫自动装箱;包装类型转换成对应…

java 8 stream_Java 8 Stream示例

java 8 stream这篇文章将帮助您了解Java 8中一些重要且经常使用的Stream操作,这使您使用Java编程变得容易。 让我们以传统示例为例,“员工和部门”。 public class Employee {private String name;private Integer age;private String city;private De…

html怎么设置图片隐藏,css3如何隐藏图片?

css3隐藏图片的方法:1、为图片元素设置display:none;样式来隐藏。2、使用visibility:hidden;样式隐藏图片。3、使用opacity:0;样式通过设置图片完全透明来设置图片不可见。css中可以使用下面几种样式隐藏图片:display:none;visibility:hidden;opacity:0;…

IntelliJ IDEA修改项目的根目录名称_修改包目录的名称_修改模块名称_修改项目名称

文章目录修改项目根目录的名称修改包目录的名称模块重命名修改了项目根目录后,必须删除项目和 .idea 文件,重新导入(重点)新版本的 IDEA 取消了 Import Project 入口修改项目根目录的名称 如果仅仅修改项目的名称,而不…

容器rocker_用Rocker制作模板

容器rocker在本文中&#xff0c;我们将快速介绍Rocker &#xff0c;这是一个静态类型化的快速Java 8模板引擎。 必需的依赖项 要开始使用Rocker&#xff0c;我们需要在项目中添加以下依赖项&#xff1a; <dependency><groupId>com.fizzed</groupId><art…

android 开源 示波器,上个老外的开源虚拟示波器

这个老贵~&#xff01;Price USD (US Dollar) $ 1595.00Network BitScope 442 ( BS442N )(原文件名:bs445n.png)(原文件名:bs440e.jpg)BS442NBS325NBS325UBS100UBS50UThe correct appearance of this website is only visible in graphical browsers that support web standard…

Java子类的成员方法可以直接调用父类的成员方法和成员变量

public class Teacher extends Employee {public static void main(String[] args) {}public void method() {super.method(); // 可以直接调父类的成员方法super.name; // 访问父类的成员变量System.out.println("子类方法执行&#xff01;");} }我的理解&#xff1…

java类似sizeof_如何用Java编写类似C的Sizeof函数

java类似sizeof如果您刚开始学习Java并且是C语言背景&#xff0c;那么您可能已经注意到Java和C编程语言之间存在一些差异&#xff0c;例如String是Java中的对象&#xff0c;而不是NULL终止的字符数组。 同样&#xff0c;Java中没有sizeof&#xff08;&#xff09;运算符。 所有…

html文件压缩成gzip,前端性能优化成神之路-HTTP压缩开启gzip

什么是HTTP压缩cssHTTP压缩是指: Web服务器和浏览器之间压缩传输的”文本内容“的方法。 HTTP采用通用的压缩算法&#xff0c;好比gzip来压缩HTML,Javascript, CSS文件。 能大大减小网络传输的数据量&#xff0c;提升了用户显示网页的速度。固然&#xff0c;同时会增长一点点服…

Java中父类的静态变量和静态方法的继承问题

1.普通父类的静态变量和方法&#xff0c;可以通过子类的名称访问和调用 2.普通父类的静态变量和方法&#xff0c;可以通过子类的实例对象访问和调用 3.抽象父类的静态变量和方法&#xff0c;可以通过具体子类的名称访问和调用 4.抽象父类的静态变量和方法&#xff0c;可以通过具…

jdk10与jdk9的区别_JDK 8与JDK 10:三元/拆箱的区别

jdk10与jdk9的区别最近的Nicolai Parlog &#xff08; nipafx &#xff09; 鸣叫引起了我的注意&#xff0c;因为它引用了一个有趣的StackOverflow讨论 &#xff0c;该讨论涉及JDK 8和JDK 10之间的行为更改&#xff0c;并询问“为什么&#xff1f;” SerCe 在StackOverflow线程…

Java的多态形式中,如何访问成员变量和调用成员方法

文章目录简介演示案例简介 多态&#xff0c;多态使 Java 更有生命和鲜活起来。多态指子类对象可以直接赋值给父类变量&#xff0c;但在运行时依然表现出子类的特征。Java 引用变量有两种类型&#xff0c;分别是编译时类型和运行时类型&#xff0c;编译时类型由声明类型决定&am…

cobol和java_Java正成为COBOL的一部分-它将成为COBOL的一部分吗?

cobol和java任何从大学&#xff0c;技术学校或社区学院毕业的计算机科学专业都接受过培训。 每个身材高大的公司都使用该语言&#xff0c;并拥有一批具备此能力的程序员。 通用语言可以推动业务发展。 1985年是COBOL。今天是Java。 尽管存在差异&#xff0c;但是这两种语言在轨…

android 6.0 dm-verity技术,Android 7.0安全性大幅提升,要求严格强制执行验证启动

在我们针对 Android 7.0 对 dm-verity 所做的更改中&#xff0c;我们使用了一个称为交错的技术&#xff0c;利用该技术&#xff0c;我们不仅可以从丢失的整个 4 KiB 源块恢复数据&#xff0c;还可从多个连续块恢复数据&#xff0c;与此同时&#xff0c;与朴素实现相比&#xff…

Java的final关键字

1.abstract 和 final 不能同时存在&#xff0c;因为自相矛盾&#xff0c;abstract 表示抽象&#xff0c;所以 abstract 修饰的类必须被实现才有意义&#xff0c;而 abstract 修饰的方法必须被覆盖重写&#xff08;即实现&#xff09;才有意义&#xff1b;但是 final 却表示最终…

zuul过滤器_Zuul 2 –样本过滤器

zuul过滤器Zuul 2终于开源了 。 我第一次听到Zuul 2年Spring由米奇科恩一个2016的讲就是可以在这里找到 &#xff0c;这是好事&#xff0c;终于可以用它玩。 为了快速实现Zuul 2之类的网关的目的–网关提供了微服务生态系统的切入点。 由于所有客户请求都是通过网关路由的&…

Java泛型的学习

文章目录前言泛型接口定义实现类时指定泛型具体的数据类型定义实现类时&#xff0c;泛型与接口相同泛型接口的示例代码泛型类演示代码泛型方法演示代码泛型的通配符泛型的区间限定泛型应用泛型性能注意事项前言 泛型的本质就是将数据类型参数化, 普通方法的参数值可以变&#…

html2canvas截取图片不完整,html2canvas关于图片不能一般截取

题目起首说说遇到了什么题目。起首有这么一个需求。须要前端依据后端传过来数据&#xff0c;动态的天生图片。图片中的案牍、背景图片、用户头像全部都是经由过程后端的接口猎取。然则运用 html2canvas 天生的canvas有些图片胜利的在canvas里天生了。然则有些图片无论如何都显现…

shebang_Shebang来Java了吗?

shebang尽管添加对Unix风格的shebang &#xff08; #! &#xff09;的支持从来不是 JEP 330 [“启动单文件源代码程序”]的主要目标&#xff0c;但围绕JEP 330“单个文件源程序”的潜在功能存在一些问题。为了支持Unix风格的shebang &#xff0c;在OpenJDK jdk-dev邮件列表上引…