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

rest和rest ful_还有更多REST技巧相关推荐

  1. 数据挖掘 点击更多 界面_6(更多)技巧,可快速改善用户界面

    数据挖掘 点击更多 界面 重点 (Top highlight) Creating beautiful, usable, and efficient UIs takes time, with many ...

  2. 数据挖掘 点击更多 界面_8(更多)技巧,可快速改善用户界面

    数据挖掘 点击更多 界面 重点 (Top highlight) Creating beautiful, usable, and efficient UIs takes time, with many ...

  3. 还有更多REST技巧

    在以前的博客文章中,我介绍了一些实现REST体系结构的想法和技巧. 在这篇文章中,我将介绍更多的想法和技巧. 快取 缓存是原始论文的很大一部分. 见5.1.4节 策略包括验证( 客户端检查它是否具有最 ...

  4. Jitpack使用指南:maven-publish如虎,jitpack如翼 【安卓Java组件化模块化】【更多gradle技巧】

    上文总结了三种多模块开发的方法. 第一种:在setting.gradle中定义子模块然后 api Project(':...'),直接引用 . 第二种,使用 maven-publish 部署至本地仓库 ...

  5. 33个神经网络「炼丹」技巧

    点击上方"视学算法","星标"或"置顶" 关键时刻,第一时间送达 本文转载自:机器之心     作者:Andrej Karpathy 特斯拉 ...

  6. sw如何缩放装配体_SolidWorks关于大型装配体的优化技巧(二)

    在之前的文章中,已经从SolidWorks的软件设置方面,阐述了关于大型装配体的优化技巧,包括:启用冻结栏,显示样式切换以及图像品质设置,今天将从工程师的日常设计规范上,给大家讲讲如何进行优化. 首先 ...

  7. 干货丨一份不可多得的深度学习技巧指南

    数据预处理 What:输入神经网络数据的好坏直接关系着网络训练结果,一般需要对数据进行预处理,常用的数据预处理方式有: 去均值:每个原始数据减去全部数据的均值,即把输入数据各个维度的数据都中心化到0: ...

  8. jQuery 性能优化技巧

    原文地址:jQuery 性能优化技巧 博客地址:www.extlight.com 一.使用最新版本 jQuery 类库 二.合理使用选择器 # 推荐使用 $("#id") # 可以 ...

  9. Metasploit新增技巧提示功能

    Metasploit新增技巧提示功能 在Metasploit 5.0.80版本中,启动msfconsole终端后,将显示有用的命令使用技巧.这些技巧可以帮助用户发现Metasploit的更多新功能.如 ...

最新文章

  1. day6 面向对象基础
  2. Redis集群:一致性哈希
  3. cli2弃用了吗 vue_vue-cli 3 和 vue-cli 2的区别
  4. robotframework 配置过程中遇到的问题
  5. 前端学习(2429):上午回顾
  6. 21届校招薪资曝光:严重倒挂老员工!
  7. 加载gif图片的方法:(需要SDWebImage方法)
  8. java 队列实现_队列的实现(JAVA)
  9. 游戏设计创造对话探秘之迭代
  10. Linux 命令整理-tailf
  11. 拼多多sdk php,标签PHP拼多多SDK文章 - 零分博客 - 关注互联网且乱扯淡互联网的个人博客...
  12. 重装显卡驱动,解决NVIDIA-SMI has failed问题
  13. Android切词工具——BreakIterator(1)
  14. DICOM医学图像读取涉及到的医学坐标体系
  15. AV1比HEVC/H.265简单对比
  16. iOS开发基础知识--碎片37
  17. 集成显卡 独立显卡 CPU核心显卡的区别
  18. shardingJdbc 的 actual-data-nodes节点扩展
  19. SAAS云服务三种模式
  20. python 做绘图工具

热门文章

  1. 【蓝桥杯】 2018年国赛 矩阵求和
  2. codeforces1301 F. Super Jaber(多源bfs+枚举)
  3. 纪中A组模拟赛总结(2021.7.22)
  4. 【动态规划】 石子合并问题(环形) (ssl 1597)
  5. [AGC031E] Snuke the Phantom Thief(网络流)
  6. 洛谷P1120小木棒 爆搜+剪枝
  7. K8S Learning(4)——Namespace
  8. Spark SQL(十)之基于物品的推荐公式
  9. 写一个http服务器
  10. ​通俗理解神经网络BP反向传播算法