网络服务器 SLAM dtel语言 pygame swiftui mockito NEC vue例子 less官网 click事件 jquery获取下一个元素 sublime分屏快捷键 oracle数据库版本 多线程实现方式 solidworks图库 eclipse显示左边目录 vue使用bootstrap oracle数据库创建表空间 kubernetes视频教程 pythoninput python的extend python包 python的random模块 java新特性 java语言代码大全 linuxshell 怎么安装linux系统 sql综合利用工具 磁盘分区软件 微信骰子表情包 任意屏官网 edquota 马颂德 无线网密码修改 jsps2寸照片制作 mysql定时备份 苹果手机怎么添加邮箱 c4d克隆 winrar去广告版 studio3t
当前位置: 首页 > 学习教程  > 编程语言

review-note-day01之RESTful

2020/8/31 12:40:11 文章标签:

RESTful

1.RESTful是什么

RESTFUL:网络应用程序的设计风格和开发方式,是目前最流行的一种架构风格,它机构清晰、符合标准、易于理解、扩展方便,所以在Web开发中经常被使用,基于HTTP,可以使用XML格式定义或JSON格式定义。RESTFUL适用于移动互联网厂商作为业务使能接口的场景,实现第三方OTT调用移动网络资源的功能,动作类型为新增、变更、删除所调用资源。

2.xml格式和json格式的区别

直观的区别,xml格式更语义化一些,贴近我们平时的说话习惯,json更像是数据的集合

3.xml相对于json属于重量级了(数据格式)

3.1 DOM

DOM是把一个数据交换格式XML看成一个DOM对象,需要把XML文件整个读入内存,这一点上JSON和XML的原理是一样的,但是XML要考虑父节点和子节点,这一点上JSON的解析难度要小很多,因为JSON构建于两种结构:key/value,键值对的集合;值的有序集合,可理解为数组

3.2 SAX

SAX不需要整个读入文档就可以对解析出的内容进行处理,是一种逐步解析的方法。程序也可以随时终止解析。这样,一个大的文档就可以逐步的、一点一点的展现出来,所以SAX适合于大规模的解析。这一点,JSON目前是做不到得。所以,JSON和XML的轻/重量级的区别在于:

  • JSON只提供整体解析方案,而这种方法只在解析较少的数据时才能起到良好的效果;
  • XML提供了对大规模数据的逐步解析方案,这种方案很适合于对大量数据的处理。

4.关于数据格式编码解析难度

4.1 编码方面

  • XML和JSON都有各自的编码工具
  • JSON的编码要比XML简单,即使不借助工具,也可以写出JSON代码,但要写出好的XML代码就有点困难
  • xml和json都是基于文本的, 它们使用的都是Unicode编码,且其与数据交换格式XML一样具有可读性。

4.2 解析方面

在普通的web应用领域,开发者经常为XML的解析伤脑筋,无论是服务器端生成或处理XML,还是客户端用 JavaScript 解析XML,都常常导致复杂的代码,极低的开发效率。
实际上,对于大多数Web应用来说,他们根本不需要复杂的XML来传输数据,XML宣称的扩展性在此就很少具有优势,许多Ajax应用甚至直接返回HTML片段来构建动态Web页面。和返回XML并解析它相比,返回HTML片段大大降低了系统的复杂性,但同时缺少了一定的灵活性。同XML或 HTML片段相比,数据交换格式JSON 提供了更好的简单性和灵活性。在Web Serivice应用中,至少就目前来说XML仍有不可动摇的地位。

5.RESTful使用

5.1常用接口规范

  • 安全性 :不会改变资源状态,可以理解为只读的;
  • 幂等性 :执行1次和执行N次,对资源状态改变的效果是等价的。

5.2.GET

状态码 表示的状态
200(OK) 已在响应中发出
204(无内容) 资源有空
301(Moved Permanently) 资源的URI已被更新
303(See Other) 其他(如,负载均衡)
304(not modified) 资源未更改(缓存)
400 (bad request) 指代坏请求(如,参数错误)
404 (not found) 资源不存在
406 (not acceptable) 服务端不支持所需表示
500 (internal server error) 通用错误响应
503 (Service Unavailable) 服务端当前无法处理请求

5.3POST

不安全且不幂等
使用服务端管理的(自动产生)的实例号创建资源
创建子资源
部分更新资源
如果没有被修改,则不过更新资源(乐观锁)

状态码 表示的状态
200(OK) 现有资源已被更改
201(created) 新资源被创建
202(accepted) 已接受处理请求但尚未完成(异步处理)
301(Moved Permanently) 资源的URI已被更新
303(See Other) 其他(如,负载均衡)
400 (bad request) 指代坏请求(如,参数错误)
404 (not found) 资源不存在
406 (not acceptable) 服务端不支持所需表示
409 (conflict) 通用冲突
412(Precondition Failed) 前置条件失败(如执行条件更新时的冲突)
415 (unsupported media type) 接受到的表示不受支持
500 (internal server error) 通用错误响应
503 (Service Unavailable) 服务端当前无法处理请求

5.4PUT 

不安全但幂等
用客户端管理的实例号创建一个资源
通过替换的方式更新资源
如果未被修改,则更新资源(乐观锁)

状态码 表示的状态
200(OK) 现有资源已被更改
201(created) 新资源被创建
301(Moved Permanently) 资源的URI已被更新
303(See Other) 其他(如,负载均衡)
400 (bad request) 指代坏请求(如,参数错误)
404 (not found) 资源不存在
406 (not acceptable) 服务端不支持所需表示
409 (conflict) 通用冲突
412(Precondition Failed) 前置条件失败(如执行条件更新时的冲突)
415 (unsupported media type) 接受到的表示不受支持
500 (internal server error) 通用错误响应
503 (Service Unavailable) 服务端当前无法处理请求

5.5 DELETE

不安全但幂等
删除资源

状态码 表示的状态
200(OK) 现有资源已被更改
301(Moved Permanently) 资源的URI已被更新
303(See Other) 其他(如,负载均衡)
400 (bad request) 指代坏请求(如,参数错误)
404 (not found) 资源不存在
409 (conflict) 通用冲突
500 (internal server error) 通用错误响应
503 (Service Unavailable) 服务端当前无法处理请求

5.6传统风格与RESTful风格简单对比

操作 传统风格URL method ------------- RESTful风格URL method
增加 /addUser?name=xxx POST   /users POST
删除 /deleteUser?id=1 GET   /user/1 DELETE
修改 /updateUser?id=123&name=test POST   /users/123 PUT
查询 /listUser GET   /users GET
指定查询 /getUser?id=456 GET   /users/456 GET

 5.7总结

RESTful风格与传统风格大同小异,关键的地方要注意

  1. 前端视图表单提交的action要与后端相对应
  2. 不同的操作使用的注解不一样,下面汇总为一个表格方便对比:
操作 使用的注解
增加 @PostMapping("")
删除 @DeleteMapping("")
修改 @PutMapping("")
查询 @GetMapping("")

本文链接: http://www.dtmao.cc/news_show_150024.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?