有一些REST技巧

编程教程 > Java (2194) 2025-01-27 10:07:01

在之前的博客  文章中,我介绍了实现REST体系结构的一些想法和提示。在这篇文章中,我会介绍更多的想法和提示。

高速缓存

  • 缓存是原始论文的重要组成部分。

  • 战略包括验证(客户检查它有最新版本)和到期(客户假定它有最新版本直到指定时间

  • 有效期:

    • 当资源即将到期时,Expires头告诉客户端。值0意味着避免缓存

  •  

    • 缓存控制

      • 使用max-age指令指定响应应被视为有效的时间长度; s-maxage共享缓存

      • 也可以在请求中使用no-cache意味着重新验证服务器的响应

  • 验证

    • Etag - 资源的唯一版本。与If-none-match请求标头一起使用

    • Last-Modified - 告诉客户端资源上次更改的时间

控制器API

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

处理日期

  • 在您的日期使用ISO-8601 - 更适合自然分类,处理时区,地区数据,大多数编程语言的支持

  • 接受任何时区,因为世界上任何人都可能会调用您的API

  • 以UTC格式存储,不在服务器的时区中。坚持时不应该有抵消。

  • 以UTC返回。允许客户根据需要调整其时区

  • 如果你不需要,不要使用时间。如果只有日期就足够了,只需要保留日期。这意味着,时区复杂性消失。

  • HEAD操作应该返回响应头

  • 总是返回什么标题是有用的。考虑:

    • 内容类型

    • 内容长度

    • 上一次更改

    • ETag的

    • 位置

超媒体(优势)

  • 更少的耦合

  • 一致的链接格式=>更干净的客户端代码

  • 开发人员的工作效率:API更易于浏览

  • 更容易以更细化的方式引入服务

  • 代码更易于调试 - 消息始终具有通过自链接创建它们的URL

超媒体(选择)

  • HAL - 减少地址耦合

  • SIREN - 减少地址和动作耦合

  • 集合+ JSON(CJ) - 减少地址,动作和对象耦合

幂等

  • 可以多次调用并返回相同的结果

  • 选项,GET,HEAD,PUT和DELETE都是幂等的

长时间运行的请求

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

方法不允许

  • 如果一个API只支持GET,它应该为任何PUT,POST,DELETE等返回一个405

必须忽略原则

  • 客户应该忽略他们不感​​兴趣的数据。这使API更容易向后兼容。如果一个API返回额外的数据,而有些客户不期待它,他们会忽略它。

不能接受的

  • 当某个资源不支持特定的媒体类型时,当所请求的媒体类型无法提供时,它应该返回406(即,Masse,规则:406(“不可接受”)

OPTIONS

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

部分更新

  • 使用PATCH处理部分更新 

询问

  • 应该使用URI的查询组件来过滤集合

资源创建

  • 当一个资源成功创建后,应该返回一个201

  • 该位置头部应注明网址获取资源。

安全

  • 如果操作不修改资源,则认为操作是安全的

  • 选项,GET和HEAD是安全的

自我链接

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

单数还是复数?

  • 对单数文档类型资源使用Singular - 只能有一个。例如:/ humans / 12343343 / head

  • 否则是复数


评论
User Image
提示:请评论与当前内容相关的回复,广告、推广或无关内容将被删除。

相关文章
前言 网络应用程序,分为前端和后端两个部分。当前的发展趋势,就是前端设备层出不穷(手机、平板、桌面电脑、其他专用设备......)。 因此,必须有一种统一的机制
spring boot 入门之spring session实现restful apis。通过spring boot或者spring mvc整合spring session的方式来实现sessio...
Java编程之Spring Boot 文件上传 REST风格API ajax方式
在之前的博客 文章中,我介绍了实现REST体系结构的一些想法和提示。在这篇文章中,我会介绍更多的想法和提示。高速缓存缓存是原始论文的重要组成部分。战略包括验证(
前言在学习RESTful 风格接口之前,即使你不知道它是什么,但你肯定会好奇它能解决什么问题?有什么应用场景?听完下面描述我想你就会明白:在互联网并没有完全流行
使用OAuth2安全的Spring REST API,Secure Spring REST API using OAuth2(含demo代码下载)
简介在主流公司的程序开发中,为了提高程序开发迭代的速度,基本都是前后端分离架构,而前端既包括网页、App、小程序等等,因此必须要有一个统一的规范用于约束前后端的
前言在这个Spring HATEOAS示例中,我们将学习如何将HATEOAS链接添加到在spring boot项目中创建的现有REST API
前言项目创建参考之前的《Vert.x 4 Web应用初识》。本文通过Vert.x实现了REST接口的CRUD操作。通过本教程你可以获得以下内容vert.x项目中
创建REST API时,良好的文档是有帮助的。而且,API中的每一个变化都应该在参考文档中同时描述。手动完成这是一个乏味的操作,因此这个过程的自动化是不可避免的。
Spring boot JPA MySQL整合实现CRUD REST接口,在这篇文章中,我们将为简单的笔记应用程序构建一个Restful CRUD API。注释可以有标题和一些内容。我们将首先...
1.概要在本Spring boot教程中,我们将学习如何验证发送到PUT/POST API请求的数据BODY
【重要提示】:目前已有更好的方法,可以参考:Swagger2 导出离线 word文档一、使用背景    如今,REST和微服务已经有了很大的发展势头
引言    在这篇文章中,我们将通过JWT(JSOn Web Token)认证来保护我们的REST API
1.引言Spring 5通过引入一种名为Spring WebFlux的全新反应框架来支持响应式编程范例