首页 > 其他分享 >day-05 接口架构风格 —RESTful

day-05 接口架构风格 —RESTful

时间:2022-10-30 21:56:05浏览次数:72  
标签:http 05 url REST localhost 8080 RESTful day 资源

第五章 接口架构风格 —RESTful

认识 REST REST(英文:Representational State Transfer,简称 REST)

一种互联网软件架构设计的风格,但它并不是标准,它只是提出了一组客户端和服务器交 互时的架构理念和设计原则,基于这种理念和原则设计的接口可以更简洁,更有层次,REST 这个词,是 Roy Thomas Fielding 在他 2000 年的博士论文中提出的。 任何的技术都可以实现这种理念,如果一个架构符合 REST 原则,就称它为 RESTFul 架构 比如我们要访问一个 http 接口:http://localhost:8080/boot/order?id=1021&status=1 采用 RESTFul 风格则 http 地址为:http://localhost:8080/boot/order/1021/1

接口: API(Application Programming Interface,应用程序接口)是一些预先定义的接口(如函数、HTTP接口),或指软件系统不同组成部分衔接的约定。 用来提供应用程序与开发人员基于某软件或硬件得以访问的一组例程,而又无需访问源码,或理解内部工作机制的细节。

接口(API): 可以指访问servlet, controller的url, 调用其他程序的 函数

架构风格: api组织方式(样子)

就是一个传统的: http://localhost:9002/mytrans/addStudent?name=lisi&age=26

​ 在地址上提供了 访问的资源名称addStudent, 在其后使用了get方式传递参数。

5.1 REST

RESTful架构风格

1)REST : (英文: Representational State Transfer , 中文: 表现层状态转移)。

REST:是一种接口的架构风格和设计的理念,不是标准。

优点: 更简洁,更有层次

==表现层状态转移: ==

​ 表现层就是视图层, 显示资源的, 通过视图页面,jsp等等显示操作资源的结果。

​ 状态: 资源变化

​ 转移: 资源可以变化的。 资源能创建,new状态, 资源创建后可以查询资源, 能看到资源的内容,

这个资源内容 ,可以被修改, 修改后资源 和之前的不一样。

2)REST中的要素:

用REST表示资源和对资源的操作。 在互联网中,表示一个资源或者一个操作。

资源使用url表示的, 在互联网, 使用的图片,视频, 文本,网页等等都是资源。

资源是用名词表示。

对资源:

​ 查询资源: 看,通过url找到资源。

​ 创建资源: 添加资源

​ 更新资源:更新资源 ,编辑

​ 删除资源: 去除

资源使用url表示,通过名词表示资源。

​ 在url中,使用名词表示资源, 以及访问资源的信息, 在url中,使用“ / " 分隔对资源的信息

http://localhost:8080/myboot/student/1001

使用http中的动作(请求方式), 表示对资源的操作(CURD)

GET: 查询资源 -- sql select

​ 处理单个资源: 用他的单数方式

http://localhost:8080/myboot/student/1001

http://localhost:8080/myboot/student/1001/1

​ 处理多个资源:使用复数形式

http://localhost:8080/myboot/students/1001/1002

POST: 创建资源 -- sql insert

http://localhost:8080/myboot/student

​ 在post请求中传递数据

<form action="http://localhost:8080/myboot/student" method="post">
	姓名:<input type="text" name="name" />
    年龄:<input type="text" name="age" />
  </form>

PUT: 更新资源 -- sql update

<form action="http://localhost:8080/myboot/student/1" method="post">
 姓名:<input type="text" name="name" />
 年龄:<input type="text" name="age" />
      <input type="hidden" name="_method" value="PUT" />
</form>

DELETE: 删除资源 -- sql delete

```xml

删除1的数据
```

需要的分页, 排序等参数,依然放在 url的后面, 例如

http://localhost:8080/myboot/students?page=1&pageSize=20

`

3) 一句话说明REST:

使用url表示资源 ,使用http动作操作资源。

  1. 注解

@PathVariable : 从url中获取数据

@GetMapping: 支持的get请求方式, 等同于 @RequestMapping( method=RequestMethod.GET)

@PostMapping: 支持post请求方式 ,等同于 @RequestMapping( method=RequestMethod.POST)

@PutMapping: 支持put请求方式, 等同于 @RequestMapping( method=RequestMethod.PUT)

@DeleteMapping: 支持delete请求方式, 等同于 @RequestMapping( method=RequestMethod.DELETE)

@RestController: 符合注解, 是@Controller 和@ResponseBody组合。

​ 在类的上面使用@RestController , 表示当前类者的所有方法都加入了 @ResponseBody

  1. Postman : 测试工具

    使用Postman : 可以测试 get ,post , put ,delete 等请求

5.2 在页面中或者ajax中,支持put,delete请求

在SpringMVC中 有一个过滤器, 支持post请求转为put ,delete

过滤器: org.springframework.web.filter.HiddenHttpMethodFilter

作用: 把请求中的post请求转为 put , delete

实现步骤:

  1. application.properties(yml) : 开启使用 HiddenHttpMethodFilter 过滤器
  2. 在请求页面中,包含 _method参数, 他的值是 put, delete , 发起这个请求使用的post方式

标签:http,05,url,REST,localhost,8080,RESTful,day,资源
From: https://www.cnblogs.com/atao-BigData/p/16842367.html

相关文章

  • Day5:Python基础:字典方法一
    1、字典增加键值Dic={'Age':18,'Name':'Jie','Sex':'male'}#增Dic['High']=160print(Dic)2、字典键值修改Dic={'Age':18,'Name':'Jie','Sex':'male'}......
  • 力扣 105. 从前序与中序遍历序列构造二叉树
    105.从前序与中序遍历序列构造二叉树给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同一棵树的中序遍历,请构造二叉树......
  • 2022-2023-1 20221405 《计算机基础与程序设计》 第九周学习总结
    作业信息这个作业属于哪个课程2022-2023-1-计算机基础与程序设计这个作业要求在哪里2022-2023-1计算机基础与程序设计第九周作业这个作业的目标操作系统责......
  • day01
    Markdown学习标题:空格+标题名字二级标题三级标题字体Hello,World!两边加两个*Hello,World!两边加一个*Hello,World!两边加三个*Hello,World!两边加两个~引用......
  • 1.2 仿百度Web Day2
    Day2和前一天的页面一样,但是改了一些规范,并且加上了弹出框(简陋版).主要是改了首尾的引航栏,将原来的直接使用a标签变成使用ul>(li>a)标签成果修改了首尾的引......
  • 1005.maximize-sum-of-array-after-k-negations K次取反后最大化数组和
    问题描述1005.K次取反后最大化的数组和解题思路贪心算法代码classSolution{staticboolcmp(inta,intb){returnabs(a)>abs(b);}public:intlar......
  • day2
    数据类型扩展publicclassDome03{  publicstaticvoidmain(String[]args){    //整数拓展:进制  二进制0b 十进制 八进制0  十六进......
  • 【XSY3905】字符串题(lyndon串,构造)
    题面字符串题题解设所有长度不超过\(n\)的串的集合为\(S\)。考虑找到一种方法,能够对一个lyndon串\(A\),直接求出\(A\)的下一个lyndon串。方法如下:先将\(A......
  • 【XSY3405】零糖麦片(二分图,复杂度均衡)
    一个听说很套路但我不会的套路:对于一个非\(1\)数\(w_i\),把它看成是\((w_i-1)+1\),于是原式变为:\[ans=\sum_{e_1,\cdots,e_t}(n-t)!\prod_{i=1}^{t}(w_{e_i}-1)\]其中......
  • s005-排序算法的稳定性及排序总结
    s005-排序算法的稳定性及排序总结稳定性如果一个数组[1,1,0,0,0,2,3,2]最终排序后结果肯定是[0,0,0,1,1,2,2,3]如果排在前面的0在排序后也放在前面,如果排在前面的1在排......