浅谈 Restful

本贴最后更新于 1431 天前,其中的信息可能已经斗转星移

在开始写之前,个人认为在编程中,对于 java 来说是一切事物皆对象,在 Restful 架构风格中核心思想是资源,可以含糊的说为“一切链接皆资源”,接下来说说 restful

一、restful 是什么?

Rest 与 Restful 简单理解为同一回事,基于 REST 构建的 API 就是 Restful 风格,REST 就是一种设计 API 的模式。最常用的数据格式是 JSON。Rrestful 是什么一种分布式系统应用层解决方案、能够实现 client 与 server 的解耦。Restful 是一种面向资源的一种如那件架构风格,他可以降低开发的复杂性,提高系统的可伸缩性。

restful 面向资源接口设计以及操作抽象简化了开发者的不良设计,同时极大限度利用资源。

二、设计规范:

协议:使用 https
域名:尽量将 api 部署在专有域名下
版本:放在 url 或者是 header 中
路径:每一个地址都是表示一种资源,不能有动词,只有名次,一般来说 API 中名词为复数
过滤信息: ?Limit=10 ?Offset10 ?Page=1 ?Sortby=name(排序)

三、请求方式:

面向资源的接口设计,抽象操作作为基础的 CURD

Method CRUD Detail
GET READ 从服务器取出资源(一项或多项)
POST CREATE 在服务器新建一个资源
PUT UPDATE 在服务器更新资源(客户端提供改变后的完整资源)
PATCH UPDATE 在服务器更新资源(客户端提供改变的属性)
DELETE DELETE 从服务器删除资源
HEAD 获取资源的元数据
OPTIONS 获取信息,关于资源的哪些属性是客户端可以改变的

四、Spring 中的应用:

//@RequestMapping(value = "/{id}", method = RequestMethod.GET)
@GetMapping(value="/{id}") 
public String toUpdate(@PathVariable("id") Integer id, Student stu) {}

Method or1 or2
GET @GetMapping() @RequestMapping(method = RequestMethod.GET)
POST @PostMapping() @RequestMapping(method = RequestMethod.POST)
PUT @PutMapping @RequestMapping(method = RequestMethod.PUT)
PATCH @DeleteMapping @RequestMapping(method = RequestMethod.PATCH)
DELETE @DeleteMapping @RequestMapping(method = RequestMethod.DELETE)
HEAD @RequestMapping(method = RequestMethod.HEAD)
OPTIONS @RequestMapping(method = RequestMethod.OPTIONS)

五、返回结果:

方式 路径 说明
Get /demos 返回资源对象列表
Get /demos/1 返回单个资源对象
Post /demos 返回新生成资源对象
Put /demos/1 返回完整的资源对象
Patch /demos/1 返回修改的属性
Delete /demos/1 返回空的相应体

六、AJAX 请求

$.ajax( {  
           type : "DELETE",  
           url : "/test/demo/" + id,  
           dataType : "json",  
           success : function(data) {  
               alert(data);  
               location.href = "/test/demo/1";  
           }  
      });

PS:

  1. SOAP 安全性高于 REST,但是 REST 效率与易用性高于 SCOP
  2. Post 是不幂等方法,get 是幂等方法。幂等性:发送 100 次与发送一次的引起的边界效应一致也就是结果一致
  3. Get、Head、Options 安全方法,只是获取数据,不具有边界效应

❤️ 给梦想一点时间,每天进步一点点 ❤️

  • RESTful

    一种软件架构设计风格而不是标准,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。

    30 引用 • 114 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...