Springboot swagger配置過程詳解(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin)
本文是配置swagger的文章,版本是【2.9.2】
1、pom.xml的jar包引入
這里為了后文操作方便,我多添加了一個(gè)commons-lang3的包用于字符串的非空判斷。
<!-- swagger包這里2.9.2 --> <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> <!-- 用作字符串非空判斷 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>
2、創(chuàng)建【com.item.swagger】的配置文件【SwaggerConfig.java】
package com.item.swagger; import org.slf4j.Logger; import org.slf4j.LoggerFactory; 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.service.Contact; import springfox.documentation.spi.DocumentationType; import springfox.documentation.spring.web.plugins.Docket; import springfox.documentation.swagger2.annotations.EnableSwagger2; @Configuration @EnableSwagger2 public class SwaggerConfig { private static Logger log = LoggerFactory.getLogger(SwaggerConfig.class); @Bean public Docket createRestApi() { log.info("進(jìn)入到swagger的配置中"); return new Docket(DocumentationType.SWAGGER_2) // 指定構(gòu)建api文檔的詳細(xì)信息的方法:apiInfo() .apiInfo(apiInfo()) .groupName("紅目香薰·為大一孩子準(zhǔn)備的") .select() // 指定要生成api接口的包路徑,這里把controller作為包路徑,生成controller中的所有接口 .apis(RequestHandlerSelectors.basePackage("com.item.controller")) .paths(PathSelectors.any()) .build(); } /** * 構(gòu)建api文檔的詳細(xì)信息 * @return */ private ApiInfo apiInfo() { return new ApiInfoBuilder() // 設(shè)置頁面標(biāo)題 .title("Spring Boot集成Swagger2接口總覽") // 設(shè)置接口描述 .description("Swagger接口") // 設(shè)置聯(lián)系方式 .contact(new Contact("測(cè)試swagger","https://laoshifu.blog.csdn.net/","")) // 設(shè)置版本 .version("1.0") // 構(gòu)建 .build(); } }
配置文件在上文的代碼中就可以看到,并且我寫了很多注釋,應(yīng)該是可以幫助到大家的。
3、示例swagger注解寫法
package com.item.controller; import com.item.model.Users; import com.item.service.UsersService; import io.swagger.annotations.Api; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.ui.Model; import org.springframework.web.bind.annotation.*; import javax.servlet.http.HttpServletRequest; import java.util.HashMap; import java.util.List; @Api("用戶操作接口") @RestController @CrossOrigin public class UsersController { @Autowired private UsersService usersService; /** * 獲取所有信息 * @return */ @GetMapping("/GetInfoApi") @ApiOperation(value = "獲取信息",notes = "沒啥留言的") public Object GetInfoApi(){ List<Users> list=usersService.GetInfo(); HashMap<String,Object> map=new HashMap<String,Object>(); map.put("state",true); map.put("msg","成功"); map.put("result",list); return map; } @GetMapping("/GetName") @ApiOperation(value = "獲取信息",notes = "沒啥留言的") @ApiImplicitParams({ @ApiImplicitParam(name = "nickName",required = true,paramType = "query",dataType = "String",value = "通過昵稱模糊查詢") }) public Object GetName(HttpServletRequest request,Model model){ String nickName = request.getParameter("nickName"); List<Users> list=usersService.SelectName(nickName); HashMap<String,Object> map=new HashMap<String,Object>(); map.put("state",true); map.put("msg","成功"); map.put("result",list); return map; } /** * 添加信息 * @param userName * @param pwd * @param nickName * @return */ @PostMapping(value = "/UserAddInfoApi") @ApiOperation(value = "添加",notes = "沒啥留言的") @ApiImplicitParams({ @ApiImplicitParam(name = "userName",required = true,paramType = "query",dataType = "String",value = "用戶名"), @ApiImplicitParam(name = "pwd",required = true,paramType = "query",dataType = "String",value = "密碼"), @ApiImplicitParam(name = "nickName",required = true,paramType = "query",dataType = "String",value = "昵稱") }) public Object UserAddInfoApi(String userName,String pwd,String nickName){ HashMap<String,Object> map=new HashMap<String,Object>(); if( StringUtils.isEmpty(userName)|| StringUtils.isEmpty(pwd)|| StringUtils.isEmpty(nickName) ){ map.put("state",false); map.put("msg","參數(shù)不潤(rùn)許為空"); map.put("result",""); return map; } usersService.UsersAddInfo(userName, pwd, nickName); map.put("state",true); map.put("msg","成功"); map.put("result",""); return map; } /** * 單個(gè)查詢 * @param id * @return */ @GetMapping("/UsersSelectById") @ApiOperation(value = "id查詢",notes = "沒啥留言的") @ApiImplicitParams({ @ApiImplicitParam(name = "id",required = true,paramType = "query",dataType = "String",value = "編號(hào)") }) public Object UsersSelectById(String id){ Users users = usersService.UsersSelectById(Integer.parseInt(id)); HashMap<String,Object> map=new HashMap<String,Object>(); map.put("state",true); map.put("msg","成功"); map.put("result",users); return map; } /** * 修改api * @param id * @param pwd * @return */ @PostMapping(value = "/UserUpdateInfoApi") @ApiOperation(value = "添加",notes = "沒啥留言的") @ApiImplicitParams({ @ApiImplicitParam(name = "id",required = true,paramType = "query",dataType = "String",value = "編號(hào)"), @ApiImplicitParam(name = "pwd",required = true,paramType = "query",dataType = "String",value = "密碼"), }) public Object UserUpdateInfoApi(String id,String pwd){ usersService.UsersUpdateInfo(pwd,Integer.parseInt(id)); HashMap<String,Object> map=new HashMap<String,Object>(); map.put("state",true); map.put("msg","成功"); map.put("result",""); return map; } /** * 刪除api * @param id * @return */ @GetMapping(value = "/UsersDeleteById") @ApiOperation(value = "根據(jù)id刪除",notes = "沒啥留言的") @ApiImplicitParams({ @ApiImplicitParam(name = "id",required = true,paramType = "query",dataType = "String",value = "編號(hào)") }) public Object UsersDeleteById(String id){ usersService.UsersDeleteById(Integer.parseInt(id)); HashMap<String,Object> map=new HashMap<String,Object>(); map.put("state",true); map.put("msg","成功"); map.put("result",""); return map; } }
4、swagger的常用注解
@Api:用于標(biāo)識(shí)一個(gè)類為 Swagger 文檔的資源。 用法示例:@Api(value = "User API", = "User Management")
@ApiOperation:用于描述一個(gè)方法的操作信息。 用法示例:@ApiOperation(value = "Get user by ID", notes = "Returns a user based on ID")
@ApiParam:用于描述一個(gè)方法參數(shù)的信息。 用法示例:@ApiParam(value = "User ID", required = true) @PathVariable("id") Long id
@ApiModel:用于描述一個(gè)數(shù)據(jù)模型(DTO)的信息。 用法示例:@ApiModel(value = "User", description = "User details")
@ApiModelProperty:用于描述一個(gè)屬性或字段的信息。 用法示例:@ApiModelProperty(value = "User name")
@ApiResponses:用于描述一個(gè)方法的多個(gè)響應(yīng)。 用法示例:@ApiResponses(value = { @ApiResponse(code = 200, message = "Success"), @ApiResponse(code = 404, message = "Not Found") })
@ApiIgnore:用于指定某個(gè)方法或類不在 Swagger 文檔中顯示。 用法示例:@ApiIgnore
5、訪問效果
網(wǎng)頁的路徑是【http://127.0.0.1:8088/MyAPI/swagger-ui.html】 ,拼接方法是【ip:port/path/swagger-ui.html】
這里的path是在配置文件中的服務(wù)路徑【server.servlet.context-path=/MyAPI】
總結(jié)
swagger是比較常用的一種API交流插件,JAVA和.NET都用,且大多數(shù)程序員都會(huì)使用,方便大家交流API。
到此這篇關(guān)于Springboot-swagger配置(idea社區(qū)版2023.1.4+apache-maven-3.9.3-bin)的文章就介紹到這了,更多相關(guān)Springboot-swagger配置內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java實(shí)現(xiàn)根據(jù)ip地址獲取地理位置
本文給大家匯總介紹了2種分別使用新浪和淘寶接口,實(shí)現(xiàn)根據(jù)IP地址獲取詳細(xì)的地理位置的代碼,非常的實(shí)用,有需要的小伙伴可以參考下。2016-03-03springboot整合websocket后啟動(dòng)報(bào)錯(cuò)(javax.websocket.server.ServerCont
這篇文章主要介紹了springboot整合websocket后啟動(dòng)報(bào)錯(cuò)(javax.websocket.server.ServerContainer not available),通過分析錯(cuò)誤信息、排查代碼和配置,找出問題的根源,并給出相應(yīng)的解決方案,感興趣的可以了解一下2024-01-01GraalVM?native-image編譯后quarkus的超音速啟動(dòng)
這篇文章主要介紹了經(jīng)過GraalVM?native-image編譯后的quarkus,來帶大家驗(yàn)證一下號(hào)稱超音速亞原子的quarkus是否名副其實(shí),有需要的朋友可以借鑒參考下,希望能夠有所包幫助2022-02-02SpringBoot開啟虛擬線程的實(shí)現(xiàn)流程
虛擬線程(Virtual?Thread)也稱協(xié)程或纖程,是一種輕量級(jí)的線程實(shí)現(xiàn),與傳統(tǒng)的線程以及操作系統(tǒng)級(jí)別的線程(也稱為平臺(tái)線程)相比,它的創(chuàng)建開銷更小、資源利用率更高,本文給大家介紹了SpringBoot如何開啟虛擬線程,需要的朋友可以參考下2024-06-06spring boot security設(shè)置忽略地址不生效的解決
這篇文章主要介紹了spring boot security設(shè)置忽略地址不生效的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Spring整合mybatis實(shí)現(xiàn)過程詳解
這篇文章主要介紹了Spring整合mybatis實(shí)現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-07-07解決springmvc使用@PathVariable路徑匹配問題
這篇文章主要介紹了解決springmvc使用@PathVariable路徑匹配問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2021-02-02