目录
前言
终于!!在这学期的课程中开始接触如何进行高效团队开发的课程!!!终于可以直面一直以来困扰我的问题,在团队合作中不同分工的人该如何交流一直是个大问题!!交流导致数据冗余,更新不及时的问题也会成为瓦解一个团队的根本原因。
内容
这种软件的首要要求应该是不会给编程人员带来太多的额外负担而且得简单快捷高效,不然跟传统写文档有什么差别…
每天编程三小时,写文档六小时…
于是,一个名为 Swagger 的软件走入了我的视线!今天就来使用它!!
优点:
- 页面简单清晰
- 配置简单,内容会随着编程的变化而变化
- 可以在线调试(页面版postman哈哈哈)
本地项目运行之后使用http://127.0.0.1:8080/swagger-ui.html
即可查看效果,云服务器只需要改成你自己的地址即可。
添加依赖
pom文件里加俩依赖进去
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger2 -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui -->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
创建一个配置类(该部分用于配置页面标题部分的显示)
@Configuration
@EnableSwagger2
public class SwaggerConfig {
@Bean
public Docket webApiConfig(){
return new Docket(DocumentationType.SWAGGER_2)
.groupName("webApi")
.apiInfo(webApiInfo())
.select()
.build();
}
private ApiInfo webApiInfo(){
return new ApiInfoBuilder()
.title("标题")
.description("项目介绍")
.version("1.0")
.build();
}
}
对应页面效果
创建主体部分(即接口信息)
设置接口类型(不应直接使用 @RequestMapping)
先随便建个控制器
按照说明加上对应的注解
@RestController
@Api(tags = "第二个控制器")
public class testController2 {
@RequestMapping("test2_A")
@ApiOperation(value = "第二个控制器的请求一")
public String test2_A(){
return "success";
}
}
启动项目,访问地址
但是点开一看,这也太繁杂了…一个接口包含了一堆,那要是接口一多起来真是很不方便…
至于这几种请求和RequestMapping之间的关系,放在下面的补充内容部分
通过修改代码
第一个控制器
@Api(tags = "第一个控制器")
@RestController
public class TestController {
@GetMapping("get")
@ApiOperation(value = "第一个控制器的get请求")
public String getTest(){
return "success";
}
@DeleteMapping("delete")
@ApiOperation(value = "第一个控制器的delete请求")
public String change(){
return "success";
}
}
第二个控制器
@RestController
@Api(tags = "第二个控制器")
public class testController2 {
@PostMapping("test2_A")
@ApiOperation(value = "第二个控制器的请求一")
public String test2_A(){
return "success";
}
}
设置接口参数
改进控制器代码
@Api(tags = "第一个控制器")
@RestController
public class TestController {
@GetMapping("get")
@ApiOperation(value = "第一个控制器的get请求")
public String getTest( @ApiParam("一个数字")int a,@ApiParam("另一个数字")int b){
return "success";
}
@DeleteMapping("delete")
@ApiOperation(value = "第一个控制器的delete请求")
public String change(){
return "success";
}
}
效果
另一个控制器用一个实体类来当作参数,先写一个实体类
@Data
@ApiModel("用户实体类 User")
public class User {
@ApiModelProperty(value = "姓名")
private String name;
@ApiModelProperty(value = "年龄")
private Integer age;
@ApiModelProperty(value = "电话")
private String phone;
@ApiModelProperty(value = "地址")
private Integer address;
@ApiModelProperty(value = "id")
private String id;
}
控制器代码
@RestController
@Api(tags = "第二个控制器")
public class testController2 {
@PostMapping("test2_A")
@ApiOperation(value = "第二个控制器的请求一")
public String test2_A(@ApiParam User user){
return "success";
}
}
效果
到这里基本用法已经熟悉了,后续熟悉其他用法的时候再来补充
补充内容
简述请求方式
request请求是一个统称,包含七种类型,这里简述常用的几种,其他的有机会再深入研究
post请求
请求会从body部分拿到数据
get请求
直接从URL获得数据
head请求
EAD方法与 GET 方法类似,也是请求从服务器获取资源,服务器的处理机制也是一样的,但服务器不会返回请求的实体数据,只会传回响应头,也就是资源的“元信息”。
HEAD 方法可以看做是 GET 方法的一个“简化版”或者“轻量版”。因为它的响应头与 GET 完全相同,所以可以用在很多并不真正需要资源的场合,避免传输 body 数据的浪费。
比如,想要检查一个文件是否存在,只要发个 HEAD 请求就可以了,没有必要用 GET 把整个文件都取下来。再比如,要检查文件是否有最新版本,同样也应该用 HEAD,服务器会在响应头里把文件的修改时间传回来。
delete请求
通过传入id删除资源