当前位置:   article > 正文

SpringBoot RESTful接口

restful接口

目录

一、RESTful接口

1、什么是RESTful?

2、RESTful的特点

3、RESTful接口实现

4、RESTful的应用场景

5、RESTful的优势

二、SpringBoot对API接口开发的支持

1、SpringBoot返回json的方式

2、SpringBoot提供与Rest的操作方式

3、对RESTful接口返回数据进行统一管理

4、RESTful接口和HTTP接口的主要区别

5、URL及参数设计规范

三、总结

(1)资源

(2)表现层

(3)状态转化

一、RESTful接口

1、什么是RESTful?

RESTful(Representational State Transfer,表示状态转移)是一种软件设计风格,它使用HTTP 协议传输数据,并通过URL来标识资源的位置和状态。RESTful的核心思想是将网络资源视为一种状态,并通过HTTP协议来传输和操作这些状态。

资源的地址 在web中就是URL (统一资源标识符)资源是REST系统的核心概念。 所有的设计都是以资源为中心。


2、RESTful的特点

1. 无状态协议:RESTful使用无状态协议,即服务器不维护与客户端的连接状态。每个请求都是独立的,可以轻松地支持并发请求和负载均衡。

2. 基于HTTP 协议:RESTful使用HTTP协议来传输数据,并通过URL来标识资源的位置和状态。HTTP 协议是一种通用的协议,可以轻松地与其他系统进行集成。

3. 资源唯一标识:在RESTful中,每个资源都有一个唯一的URL,可以通过HTTP请求来获取或修改该资源的状态。这种唯一标识使得RESTful更加易于使用和管理。

4. 标准化:RESTful采用了一些标准化的概念和规则,如HTTP协议、URL、JSON等,使得开发人员可以更加轻松地设计和实现系统。


3、RESTful接口实现

引入alibaba的JSON依赖:

  1. <dependency>
  2. <groupId>com.alibaba</groupId>
  3. <artifactId>fastjson</artifactId>
  4. <version>2.0.18</version>
  5. </dependency>

4、RESTful的应用场景


RESTful适用于许多不同的应用场景,包括:

1. Web 应用程序:RESTful可以用于构建Web应用程序,如社交媒体网站、博客、在线商店等。

2. 移动应用程序:RESTful可以用于构建移动应用程序,如手机应用程序、平板电脑应用程序等。

3. 后端应用程序:RESTful可以用于构建后端应用程序,如数据库服务器、消息队列服务器等。

4. 物联网设备:RESTful可以用于构建物联网设备,如智能家居设备、智能城市设备等。


5、RESTful的优势

1. 可扩展性:RESTful使用无状态协议,可以轻松地支持并发请求和负载均衡,从而提高系统的可扩展性。

2. 可靠性:RESTful使用HTTP 协议来传输数据,HTTP协议是一种通用的协议,可以保证数据的可靠性和安全性。

3. 易于使用和管理:RESTful使用标准化的概念和规则,如HTTP协议、URL、JSON等,使得开发人员可以更加轻松地设计和实现系统。

4. 跨平台支持:RESTful可以用于构建跨平台的应用程序,如Web应用程序、移动应用程序、后端应用程序等。


二、SpringBoot对API接口开发的支持

1、SpringBoot返回json的方式


类注解


@RestController
@Restcontroller注解包含了原来的@Controller 注解和@ResponseBody注解,
@ResponseBody 注解是将返回的数据转换为JSON 格式


注意:当使用前后端分离开发,就不需要使用模板渲染,数据以JSON 格式传输给前端,前端得到后直接解析
方法注解


@ResponseBody


一般情况下,推荐使用类注解,这样可以统一API接口,和编码风格。实现时,可以根据业务需求使用对应的@GetMapping、@PostMapping


2、SpringBoot提供与Rest的操作方式

@GetMapping:处理Get 请求

200(OK) - 表示已在响应中发出

204(无内容) - 资源有空表示

301(Moved Permanently) - 资源的URI已被更新

303(See Other) - 其他(如,负载均衡)

304(not modified)- 资源未更改(缓存)

400 (bad request)- 指代坏请求(如,参数错误)

404 (not found)- 资源不存在

@PostMapping:处理 post 请求
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)- 服务当前无法处理请求

@PutMapping:处理资源更新请求

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)- 服务当前无法处理请求

@DeleteMapping:处理删除请求

400 (bad request)- 指代坏请求

404 (not found)- 资源不存在

409 (conflict)- 通用冲突

500 (internal server error)- 通用错误响应

503 (Service Unavailable)- 服务端当前无法处理请求


@patchMapping:处理部分资源更新请求


3、对RESTful接口返回数据进行统一管理

super():子类重写父类方法。可以通过super()调用父类其它重载的构造函数,完成构造函数重写
super()的三种使用情况


调用父类被子类重写的方法
调用父类被子类重定义的成员变量(被隐藏的成员变量)
调用父类的构造函数


注意:super()如需使用,必须在子类构造函数的第一句

  1. package cn.edu.lzzy.vm
  2. public class JSONResult{
  3. private Integer code://状态码
  4. private Object data;/数据
  5. private String message;信息
  6. public JSONResult(){
  7. super();
  8. }
  9. public JSONResult(Integer code, obgect data, sthing msg){
  10. super():
  11. this.code = code;
  12. this.data = data;
  13. this,message = msg;
  14. }
  15. public JsoNResult(object data, String msg){
  16. super();
  17. this.data = data;
  18. this.message = msg;
  19. }
  20. public staticJSONResult isok(Object data) {
  21. returnnew JSONResult(200,data success);
  22. }
  23. public static JSONResult isError(inteder code. String msg {return new JSONResult (code null,msg);
  24. }
  25. public Integer getcode(){
  26. return code;
  27. }
  28. public void setcode(integer code){
  29. this.code = code;
  30. }
  31. public Object getData(){
  32. return data;
  33. }
  34. public object getData(){
  35. return data;
  36. }
  37. public void setData(Object data) {
  38. this.data data;
  39. }
  40. public String getMessage(){
  41. return message;
  42. }
  43. public void setMessage(String message){
  44. this.message = message;
  45. }

4、RESTful接口和HTTP接口的主要区别


(1)URL表达形式不同。HTTP接口调用的URL表达形式可以不遵循任何标准格式,而RESTful调用的URL表达形式必须遵循RESTful架构风格的URL格式规范。
(2)请求方法不同。HTTP接口调用可以使用GET、POST、PUT等HTTP请求方法,而RESTful调用只能使用GET、POST、PUT、DELETE四种HTTP请求方法。
(3)数据传输格式不同。HTTP接口调用可以使用任意数据格式,如form、json、xml等,而RESTful调用通常使用JSON或XML数据格式进行数据传输。
(4)资源定义不同。HTTP接口调用不依赖于任何具体的资源定义,而RESTful调用的资源和API请求对应,需要在URL中对资源进行定义。


5、URL及参数设计规范

URL末尾不需要出现斜杠/

在URL中使用斜杠/是表达层级关系的。

在URL中可以使用连接符-, 来提升可读性。比如 http://xxx.com/xx-yy 比 http://xxx.com/xx_yy中的可读性更好。

在URL中不允许出现下划线字符_。

在URL中尽量使用小写字符。

在URL中不允许出现文件扩展名. 比如接口为 /xxx/api, 不要写成 /xxx/api.php 这样的是不合法的。在URL中使用复数形式。

三、总结

(1)资源

⽹络上的⼀个实体,或者说是⽹络上的⼀个具体信息。它可以是⼀段⽂本、⼀张图⽚、⼀⾸歌曲、⼀种服务,总之就是⼀个具体的存在。可以⽤⼀个 URI(统⼀资源定位符)指向它,每种资源对应⼀个特定的 URI 。要获取这个资源,访问它的 URI 就可以,因此URI 即为每⼀个资源的独⼀⽆⼆的识别符。

资源的地址 在web中就是URL (统一资源标识符)资源是REST系统的核心概念。 所有的设计都是以资源为中心。

(2)表现层

把资源具体呈现出来的形式,叫做它的表现层 (Representation)。⽐如,⽂本可以⽤ txt 格式表现,也可以⽤ HTML 格式、XML 格式、JSON 格式表现,甚⾄可以采⽤⼆进制格式。

(3)状态转化

每发出⼀个请求,就代表了客户端和服务器的⼀次交互过程。

欢迎评论区交流


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/繁依Fanyi0/article/detail/580080
推荐阅读
相关标签
  

闽ICP备14008679号