RESTful+Swagger——Spring Boot后端学习(三)

运行环境

jdk 1.8
spring boot 2.5.6
maven 3.9.1
编译器 idea
参照1天搞定SpringBoot+Vue全栈开发的学习笔记

RESful介绍

互联网软件服务架构风格

特点

每个URL代表一种资源

客户端操作
GET:获取资源
POST:新建资源
PUT:更新资源
DELETE:删除资源

操作资源的表现形式来实现服务端请求操作

资源表现形式是JSON和HTML

客户端与服务器之间的交互在请求之间是无状态的

RESTful API特性

安全性:GET操作只是获取资源,不能用于修改服务器资源操作
幂等性:重复进行一次请求和一次请求操作对服务器资源的状态修改是一致的

HTTP请求

HTTP状态码

类别

1XX:信息,通信传输协议级信息
2XX:成功,客户端的请求已成功接受
3XX:重定向,客户端必须执行一些其他操作才能完成请求
4XX:客户端错误,此类错误状态码指向客户端
5XX:服务器错误,服务器负责写这类错误码

在这里插入图片描述

构建RESful应用接口

Spring Boot通过标记也可支持开发RESTful API

@GetMapping
@PostMapping
@PutMapping
@DeleteMapping
@PatchMapping  //处理PATCH请求,用于部分更新紫云

RESTful中,网址代表资源,URL中建议不包含动词,只包含名词即可,所用名词往往与数据库的表格名对应

实例

@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 deleteUserById(@PathVariable int id){
        System.out.println(id);
        return "根据ID删除用户";
    }
}
  • id是动态的,需要加上花括号{}
  • @PathVariable:用于传递参数,可以直接写在路径上,如果不加这个标记,只能传递地址中 ? 后面的参数
添加用户

在这里插入图片描述

如在地址栏输入要传递的参数,返回成功信息,后台就可以获取数据

在这里插入图片描述

删除用户

通过postman发送DELETE等请求,也可以对数据进行操作

在这里插入图片描述

后台返回控制信息

在这里插入图片描述

使用Swagger生成Web API文档

Swagger是一个规范和完整的框架,用于动态生成API接口文档

添加swagger依赖

修改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>
添加配置文件
@Configuration
@EnableSwagger2  //开启Swagger2功能
public class Swagger2Config {
    @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();
    }
}
进行接口测试

访问http://localhost:8080/swagger-ui.html

报错信息
Failed to start bean ‘documentationPluginsBootstrapper’; nested exception is java.lang.NullPointerException

原因:Spring Boot 版本与Swagger 版本不匹配
Spring Boot 2.6.X以下匹配Swagger2
Spring Boot 2.6.X以上匹配Swagger3

解决方案:给Spring Boot降级为2.5.6

在这里插入图片描述

访问成功的界面如上图所示

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Spring Boot是一个用于创建独立的、基于生产级别的Spring应用程序的框架。它简化了Spring应用程序的配置和部署过程,并提供了一套强大的开发工具和约定,使开发人员能够更专注于业务逻辑的实现。 MyBatis Plus是MyBatis的增强工具,它提供了一系列的便利功能和增强特性,使得使用MyBatis更加简单和高效。它包括了代码生成器、分页插件、逻辑删除、乐观锁等功能,可以大大提高开发效率。 Redis是一个开源的内存数据库,它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。Redis具有高性能、高可用性和可扩展性的特点,常用于缓存、消息队列、分布式锁等场景。 Driver是指数据库驱动程序,它是用于连接数据库和执行SQL语句的软件组件。在Spring Boot,我们可以通过配置数据源和引入相应的数据库驱动程序来实现与数据库的交互。 Knife4j是一款基于SwaggerAPI文档生成工具,它提供了更加美观和易用的界面,可以方便地查看和测试API接口。 Swagger是一套用于设计、构建、文档化和使用RESTful风格的Web服务的工具。它可以自动生成API文档,并提供了交互式的界面,方便开发人员进行接口测试和调试。 JWT(JSON Web Token)是一种用于身份验证和授权的开放标准。它通过在用户和服务器之间传递加密的JSON对象来实现身份验证和授权功能,避免了传统的基于Session的身份验证方式带来的一些问题。 Spring Security是Spring提供的一个安全框架,它可以集成到Spring Boot应用程序,提供身份验证、授权、攻击防护等安全功能。通过配置Spring Security,我们可以实现对API接口的访问控制和权限管理。 关于Spring Boot + MyBatis Plus + Redis + Driver + Knife4j + Swagger + JWT + Spring Security的Demo,你可以参考以下步骤: 1. 创建一个Spring Boot项目,并引入相应的依赖,包括Spring Boot、MyBatis Plus、Redis、数据库驱动程序等。 2. 配置数据源和数据库驱动程序,以及MyBatis Plus的相关配置,如Mapper扫描路径、分页插件等。 3. 集成Redis,配置Redis连接信息,并使用RedisTemplate或者Jedis等工具类进行操作。 4. 集成Knife4j和Swagger,配置Swagger相关信息,并编写API接口文档。 5. 集成JWT和Spring Security,配置安全相关的信息,如登录认证、权限管理等。 6. 编写Controller层的代码,实现具体的业务逻辑。 7. 运行项目,通过Swagger界面进行接口测试。 希望以上内容对你有帮助!如果还有其他问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值