1. 程式人生 > >SpringBoot使用優化之-----Swagger2使用(線上介面文件)

SpringBoot使用優化之-----Swagger2使用(線上介面文件)

1. 引入依賴

        <!--swagger2依賴-->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.7.0</version>
        </dependency>

 2. 新增配置

 創建於主程式類同級的Swagger2  類

內容如下

@Configuration //標記配置類
@EnableSwagger2 //開啟線上介面文件
public class Swagger2 {
    @Bean
    public Docket createRestfulApi() {//api文件例項
        return new Docket(DocumentationType.SWAGGER_2)//文件型別:DocumentationType.SWAGGER_2
                .apiInfo(apiInfo())//api資訊
                .select()//構建api選擇器
                .apis(RequestHandlerSelectors.basePackage("com.example.demo.Controller"))//api選擇器選擇api的包
                .paths(PathSelectors.any())//api選擇器選擇包路徑下任何api顯示在文件中
                .build();//建立文件
    }

    private ApiInfo apiInfo() {//介面的相關資訊
        return new ApiInfoBuilder()
                //頁面標題
                .title("Spring Boot中使用Swagger2構建RESTful介面")
                //描述
                .description("介面描述")
                .termsOfServiceUrl("termsOfServiceUrl")
                //建立人
                .contact(new Contact("Mr.sun", null, null))
                //版本號
                .version("1.0")
                .build();
    }
}

注意更改與自己專案相符合的api路徑

下面的ApiInfo顯示效果如下

3. 編寫介面文件

@Api(tags="使用者資訊管理系統",value = "使用者資訊管理")
@Controller
@RequestMapping(value = "/user")
public class UserController {
    @Autowired
    private UserService userService;


    @ResponseBody
    @RequestMapping(value = "/select",method = RequestMethod.GET)
    @ApiOperation(value = "查詢所有使用者",notes = "使用者資訊")
    public Object selectAllUser(){
        return userService.findAllUser();
    }

    @ResponseBody
    @RequestMapping(value = "/selectByid",method = RequestMethod.POST)
    @ApiOperation(value = "根據id查詢使用者資訊",notes = "id為string型別")
    @ApiImplicitParam(name = "user", value = "單個使用者資訊", dataType = "User")
    public User selectByid(String id){
        return userService.selectByid(id);
    }
}

以上配置顯示效果如下。

可以根據自己的需要增加  具體說明如下

//@Api:用在請求的類上,表示對類的說明
//        tags="說明該類的作用,可以在UI介面上看到的註解"
//        value="該引數沒什麼意義,在UI介面上也看到,所以不需要配置"
//
//@ApiOperation:用在請求的方法上,說明方法的用途、作用
//        value="說明方法的用途、作用"
//        notes="方法的備註說明"
//
//@ApiImplicitParams:用在請求的方法上,表示一組引數說明
//@ApiImplicitParam:用在@ApiImplicitParams註解中,指定一個請求引數的各個方面
//        name:引數名
//        value:引數的漢字說明、解釋
//        required:引數是否必須傳
//        paramType:引數放在哪個地方
//        · header --> 請求引數的獲取:@RequestHeader
//            · query --> 請求引數的獲取:@RequestParam
//            · path(用於restful介面)--> 請求引數的獲取:@PathVariable
//            · body(不常用)
//                    · form(不常用)
//                    dataType:引數型別,預設String,其它值dataType="Integer"
//                    defaultValue:引數的預設值
//
//@ApiResponses:用在請求的方法上,表示一組響應
//@ApiResponse:用在@ApiResponses中,一般用於表達一個錯誤的響應資訊
//        code:數字,例如400
//        message:資訊,例如"請求引數沒填好"
//        response:丟擲異常的類
//
//@ApiModel:用於響應類上,表示一個返回響應資料的資訊
//        (這種一般用在post建立的時候,使用@RequestBody這樣的場景,
//        請求引數無法使用@ApiImplicitParam註解進行描述的時候)
//@ApiModelProperty:用在屬性上,描述響應類的屬性