发表于: 2020-09-11 21:52:11

1 1381


今天完成的事情: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的属性


返回列表 返回列表
评论

    分享到