【Spring&Vue学习】四、RESTful服务+Swagger


????原文阅读


????章前导言

本文为B站1天搞定SpringBoot+Vue全栈开发系列视频学习笔记,带时间戳的B站笔记(不含代码)已经施工完成,点击视频右下角的“笔记”按钮即可查看(不带B站时间戳的笔记专栏链接在这)。

有能力的朋友请多多支持up拿完整的课件代码!本笔记代码部分不全,纯手打(我手打是因为个人而言手打记忆才深刻)。

如果想要资料,老师的微信公众号有免费的课件和文档,关注“软件练习生”公众号回复“Java”获取课件资料(注意:关注回复关键字就可以,不会让你加群/微信的!)。

我自己整理的课件、代码等资料(不保证全),放在Github上了,需要的自取。
????1天搞定SpringBoot+Vue全栈开发·个人整理资料


目录

    • ????[原文阅读](https://b1ankc-mov.github.io/posts/springbootp5)
        • ????章前导言
  • ????正文开始
    • RESTful服务
      • RESTful介绍
      • RESTful特点
      • RESTful API(符合此架构接口的必备特质)
      • 实操
    • Swagger
      • 配置
      • 使用Swagger2进行接口测试


????正文开始

对应视频内容????RESTful服务+Swagger

RESTful服务

RESTful介绍

RESTful是一种软件服务架构设计风格

RESTful特点

例如,将请求清晰分类,GET用于获取,POST用于新建,等等等等

  • 每一个URI代表一种资源。
  • 客户端使用GET、POST、PUT、DELETE四种表示操作方式的动词对服务端资源进行操作:GET用于获取资源,POST用于新建资源(也可以用于更新资源),PUT用于更新资源,DELETE用于删除资源。
  • 通过操作资源的表现形式来实现服务端请求操作。
  • 资源的表现形式是JSON或者HTML。
  • 客户端与服务端之间的交互在请求之间是无状态的。从客户端到服务端的每个请求都包含必需的信息。

RESTful API(符合此架构接口的必备特质)

符合RESTful规范的Web API需要具备如下两个关键特性:

  • 安全性:安全的方法被期望不会产生任何副作用。当我们使用GET操作获取资源时。不会引起资源本身的改变,也不会引起服务器状态的改变。
  • 幂等性:幂等的方法保证了重复进行一个请求和一次清求的效果相同(并不是指响应总是相同的,而是指服务器上资源的状态从第一次请求后就不再改变了),在数学上幂等性是指N次变换和一次变换相同。

在做BS架构程序时,想要符合RESTful风格,对应几种请求方法即可

实际编程时如何实现RESTful风格

  • Spring Boot提供的spring-boot-starter-web组件完全支持开发RESTful API,提供了与REST操作方式(GET.POST、PUT、DELETE)对应的注解:
    • GetMapping:处理GET请求,获取资源。
    • PostMapping:处理POST请求,新增资源。
    • putMapping:处理PUT请求,更新资源。
    • DeleteMapping:处理DELETE请求,删除资源。
    • PatchMapping:处理PATCH请求,用于部分更新资源。
  • URL中不要包含动词(传统的比如删除用户操作为http://xxx/del?id=10,但是RESTful需要delete http://xxx/user/10)
    示例:(RESTful增删改查)(加**{}意味其为动态**,需要加入PathVariable注解)

实操

全部代码如下

@RestController
public class UserController {
    @GetMapping("/user/{id}")
    public String getUserById(@PathVariable int id){
        System.out.println(id);
        return "根据ID获取用户信息";
    }
    @PostMapping("/user")
    public String save(User user){return "添加用户";}
    @PutMapping("/user")
    public String update(User user){return "更新用户";}
    @DeleteMapping("/user/{id}")
    public String deleteById(@PathVariable int id){
        System.out.println(id);
        return "根据ID删除用户";
    }
}

Swagger

Java内提供的测试工具
通过Swagger动态生成web接口文档(方便前端使用),也可以进行端口测试

配置

  1. 在pom.xml加入依赖↓
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>

{{< admonition warning >}}
Spring Boot 2.6.X后与Swagger有版本冲突问题,需要在application.properties中加入以下配置:
spring.mvc.pathmatch.matching-strategy=ant_path_matcher
{{< /admonition >}}

  1. 然后做一个基本的配置↓(在config下创建一个SwaggerConfig配置类)
@Configuration
@EnableSwagger2
public class SwaggerConfig {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis( RequestHandlerSelectors.basePackage("com"))
                .paths(PathSelectors.any()).build();

    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("演示项目API")//标题
                .description("学习Swagger2的演示项目")//描述
                //附加信息
                .build();
    }
}

使用Swagger2进行接口测试

启动项目访问 http://127.0.0.1:8080/swagger-ui.html ,即可打开自动生成的可视化测试页面

上一篇:使用css,让div消失在视野中的方法


下一篇:怎样在Python中使用oobabooga的API密钥,通过端口5000获取模型列表的授权