发表于: 2020-09-11 21:52:11
1 1385
今天完成的事情:Swagger学习使用。
明天计划的事情:拆解task,因为今天组长没有把需求写到禅道。
遇到的问题:springBoot运行后路径访问不到。
收获:
Swagger的学习
为了方便维护和生成接口文档,Swagger提供了通过扫描代码,生成描述文件,形成和代码一致的接口文档和客户端代码。Swagger也被Spring规范纳入自身的标准,建立了Spring-swagger项目,后该名为Springfox。
1.Sringboot配置依赖
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-boot-starter</artifactId>
<version>3.0.0</version><dependency>
如果是spring项目导入依赖包为
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>3.0.0</version>
<scope>compile</scope>
</dependency>
2. 应用主类增加注解@EnableOpenApi
。
@SpringBootApplication
@EnableOpenApi
public class SpringbootswaggerApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootswaggerApplication.class, args);
}
}
3. 控制层以及实体类加注解,配置接口就行。@ApiModel @Api @ApiOperation
@ApiModel("用户基本信息类")
@Component
public class User {
@ApiModelProperty("姓名")
@Size(max = 20)
private String name;
@ApiModelProperty("年龄")
@Max(150)
@Min(1)
private int age;
@NotNull
private String address;
@Pattern(regexp = "^[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(\\.[a-zA-Z0-9_-]+)+$")
private String email;
public User( ){
}
public User(String name, int age, String address, String email) {
this.name = name;
this.age = age;
this.address = address;
this.email = email;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
@Override
public String toString() {
return "User{" +
"name='" + name + '\'' +
", age=" + age +
", address='" + address + '\'' +
", email='" + email + '\'' +
'}';
}
}
@Api(tags = "用户管理")
@Controller
public class UserController {
@ApiOperation("创建用户")
@PostMapping("/users")
public User create(@RequestBody @Validated User user){
return user;
}
@ApiOperation("用户详情")
@GetMapping("/users/{id}")
public User findById(){
return new User("张三",21,"上海","abfa@ff.com");
}
@ApiOperation("用户列表")
@RequestMapping("/users")
@ResponseBody
public List<User> list(@ApiParam("当前页") @RequestParam int page,
@ApiParam("每页多少条") @RequestParam int size){
List<User> result = new ArrayList<User>();
result.add(new User("李四",31,"北京","abfa@ff.com"));
result.add(new User("王五",23,"北京","abfa@ff.com"));
return result;
}
@ApiIgnore
@DeleteMapping("/users/{id}")
public String deleteById(@PathVariable Long id){
return "delete user : " + id;
}
}
4. 启动应用!访问swagger页面:http://localhost:8080/swagger-ui/index.html
可能我还用的少,还不能感受它的魅力,这个UI图还是好看。
5. 注解说明
@Api : 用在类上,说明该类的主要作用。
@ApiOperation:用在方法上,给API增加方法说明。
@ApiImplicitParams : 用在方法上,包含一组参数说明。
@ApiImplicitParam:用来注解来给方法入参增加说明。
@ApiResponses:用于表示一组响应。
@ApiResponse:用在@ApiResponses中,一般用于表达一个错误的响应信息
l code:数字,例如400
l message:信息,例如"请求参数没填好"
l response:抛出异常的类
@ApiModel:用在返回对象类上,描述一个Model的信息(一般用在请求参数无法使用@ApiImplicitParam注解进行描述的时候)
@ApiModelProperty:描述一个model的属性
评论