基本知识
Spring Boot 提供的spring-boot-starter-web组件支持开发RESTFUL API,提供了与REST操作方式(get,post,put。delete,patch)对应的注解。
@GetMapping: 处理get请求,获取资源。
@PostMapping:新增资源
@PutMapping:更新资源
@DeleteMapping:删除资源
@PatchMapping:更新部分资源
url代表资源尽量进行不用动词
客户端使用get、post、put、delete四种表示操作方式的动词对服务器资源进行操作。
资源的表现形式是json或html。
客户端与服务器之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都包含必需的信息。
Http Method | 接口地址 | 接口说明 |
---|---|---|
post | /user | 创建用户 |
get | /user/id | 根据id获取用户信息 |
put | /user/id | 根据id更新用户 |
delete | /user/id | 根据id删除用户 |
使用swagger生成web api文档
在项目中引入swagger依赖
<!-- pom.xml -->
<!-- 添加Swagger2相关功能 -->
<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>
配置Swagger
// src\main\java\com\example\config\SwaggerConfig.java
package com.example.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@Configuration // 通知spring容器,此类为一个配置类
@EnableSwagger2 // / 该注解开启Swagger2的自动配置
public class SwaggerConfig {
/**
* 配置Swagger相关的bean
*
*/
@Bean
public Docket docker() {
// 构造函数传入初始化规范,这是swagger2规范
return new Docket(DocumentationType.SWAGGER_2)
// apiInfo:
// 添加api详情信息,参数为ApiInfo类型的参数,这个参数包含了第二部分的所有信息比如标题、描述、版本之类的,开发中一般都会自定义这些信息
.apiInfo(apiInfo())
.groupName("jiasuba")
// 配置是否启用Swagger,如果是false,在浏览器将无法访问,默认是true
.enable(true)
.select()
// apis: 添加过滤条件,
// com.example.controller包下所有api都交给Swagger管理
.apis(RequestHandlerSelectors.basePackage("com.example.controller"))
// paths: 这里是控制哪些路径的api会被显示出来,比如下方的参数就是除了/user以外的其它路径都会生成api文档
.paths(PathSelectors.any())
.paths((String a) -> !a.equals("/user"))
.build();
}
private ApiInfo apiInfo() {
return new ApiInfoBuilder().title("演示项目API").description("description").version("version").build();
}
}
在路由上添加备注
@ApiOperation("获取用户信息")
@GetMapping("/user/{id}")
public Object getUserById(@PathVariable int id) {
Map<String, Object> map = new HashMap<>();
map.put("msg", "获取成功");
return map;
}
访问网址
http://localhost:8081/swagger-ui.html