四、Swagger
- 1、在changgou_service_api工程的pom文件里引入swagger坐标
<!--swagger-->
<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>
- 2、在changgou_service_goods工程定义swagger配置类
package com.changgou.service.goods.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
@EnableSwagger2
public class Swagger2Configuration {
@Bean
public Docket createRestApi() {
//扫描的包结构
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.changgou"))
.paths(PathSelectors.any())
.build();
}
//1、标题 2、小标题
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("畅购商城API文档")
.description("畅购商城API文档-商品管理")
.version("1.0")
.build();
}
}
- 3、在com.changgou.service.goods.controller.BrandController中添加swagger注解
package com.changgou.service.goods.controller;
import com.changgou.common.pojo.PageResult;
import com.changgou.common.pojo.Result;
import com.changgou.common.pojo.StatusCode;
import com.changgou.goods.pojo.Brand;
import com.changgou.service.goods.service.BrandService;
import com.github.pagehelper.Page;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.List;
import java.util.Map;
@RequestMapping("/brand")
@RestController
@Api(value = "品牌管理",tags = "品牌管理" )
public class BrandController {
@Autowired
private BrandService brandService;
@GetMapping //这个controller的描述
@ApiOperation("查询所有的品牌")
public Result<List<Brand>> findList(){
List<Brand> brandList = brandService.findList();
return new Result<>(true, StatusCode.OK,"查询成功",brandList);
}
@GetMapping("/{id}")
@ApiOperation("根据id查询品牌")
//主键不能为空
@ApiImplicitParams({
@ApiImplicitParam(name="id",value = "主键",paramType = "path",required=true,dataType="int",allowEmptyValue=false)
})
public Result<Brand> findById(@PathVariable("id") Integer id){
Brand brand = brandService.findById(id);
return new Result<>(true,StatusCode.OK,"查询成功",brand);
}
@PostMapping
@ApiOperation("添加品牌")
public Result add(@RequestBody Brand brand){
brandService.add(brand);
return new Result(true,StatusCode.OK,"添加成功");
}
@PutMapping("/{id}")
public Result update(@PathVariable("id") Integer id,@RequestBody Brand brand){
brand.setId(id);
brandService.update(brand);
return new Result(true,StatusCode.OK,"修改成功");
}
@DeleteMapping("/{id}")
public Result delById(@PathVariable("id") Integer id){
brandService.delById(id);
return new Result(true,StatusCode.OK,"删除成功");
}
@GetMapping("/search")
public Result<List<Brand>> search(@RequestParam Map searchMap){
List<Brand> list = brandService.list(searchMap);
return new Result<>(true,StatusCode.OK,"查询成功",list);
}
@GetMapping("/search/{page}/{size}")
public Result findPage(@PathVariable("page")int page,@PathVariable("size") int size){
Page<Brand> pageInfo = brandService.findPage(page, size);
PageResult pageResult = new PageResult(pageInfo.getTotal(),pageInfo.getResult());
return new Result(true,StatusCode.OK,"查询成功",pageResult);
}
@GetMapping("/searchPage/{page}/{size}")
public Result findPage(@RequestParam Map searchMap,@PathVariable("page")int page,@PathVariable("size") int size){
int i=1/0;
Page pageInfo = brandService.findPage(searchMap, page, size);
PageResult pageResult = new PageResult(pageInfo.getTotal(),pageInfo.getResult());
return new Result(true,StatusCode.OK,"查询成功",pageResult);
}
}
- 4、定义com.changgou.goods.pojo.Brand实体的swagger注解
package com.changgou.goods.pojo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import javax.persistence.Id;
import javax.persistence.Table;
import java.io.Serializable;
@Table(name = "tb_brand")
@ApiModel("品牌实体")
public class Brand implements Serializable {
@Id
@ApiModelProperty("品牌id")
private Integer id;//品牌id
private String name;//品牌名称
private String image;//品牌图片地址
private String letter;//品牌的首字母
private Integer seq;//排序
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
public String getLetter() {
return letter;
}
public void setLetter(String letter) {
this.letter = letter;
}
public Integer getSeq() {
return seq;
}
public void setSeq(Integer seq) {
this.seq = seq;
}
}
5.访问swagger页面
启动goods服务,访问 http://localhost:9011/swagger-ui.html