摘要:另外很容易構(gòu)建風(fēng)格的,簡(jiǎn)單優(yōu)雅帥氣,正如它的名字。配置一些基本的信息。三寫(xiě)生產(chǎn)文檔的注解通過(guò)注解表明該接口會(huì)生成文檔,包括接口名請(qǐng)求方法參數(shù)返回信息的等等。四參考資料中使用構(gòu)建強(qiáng)大的文檔
swagger,中文“拽”的意思。它是一個(gè)功能強(qiáng)大的api框架,它的集成非常簡(jiǎn)單,不僅提供了在線文檔的查閱,而且還提供了在線文檔的測(cè)試。另外swagger很容易構(gòu)建restful風(fēng)格的api,簡(jiǎn)單優(yōu)雅帥氣,正如它的名字。
一、引入依賴(lài)二、寫(xiě)配置類(lèi)io.springfox springfox-swagger2 2.6.1 io.springfox springfox-swagger-ui 2.6.1
@Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.forezp.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("springboot利用swagger構(gòu)建api文檔") .description("簡(jiǎn)單優(yōu)雅的restfun風(fēng)格,http://blog.csdn.net/forezp") .termsOfServiceUrl("http://blog.csdn.net/forezp") .version("1.0") .build(); } }
通過(guò)@Configuration注解,表明它是一個(gè)配置類(lèi),@EnableSwagger2開(kāi)啟swagger2。apiINfo()配置一些基本的信息。apis()指定掃描的包會(huì)生成文檔。
三、寫(xiě)生產(chǎn)文檔的注解swagger通過(guò)注解表明該接口會(huì)生成文檔,包括接口名、請(qǐng)求方法、參數(shù)、返回信息的等等。
@Api:修飾整個(gè)類(lèi),描述Controller的作用 @ApiOperation:描述一個(gè)類(lèi)的一個(gè)方法,或者說(shuō)一個(gè)接口 @ApiParam:?jiǎn)蝹€(gè)參數(shù)描述 @ApiModel:用對(duì)象來(lái)接收參數(shù) @ApiProperty:用對(duì)象接收參數(shù)時(shí),描述對(duì)象的一個(gè)字段 @ApiResponse:HTTP響應(yīng)其中1個(gè)描述 @ApiResponses:HTTP響應(yīng)整體描述 @ApiIgnore:使用該注解忽略這個(gè)API @ApiError :發(fā)生錯(cuò)誤返回的信息 @ApiParamImplicitL:一個(gè)請(qǐng)求參數(shù) @ApiParamsImplicit 多個(gè)請(qǐng)求參數(shù)
現(xiàn)在通過(guò)一個(gè)栗子來(lái)說(shuō)明:
package com.forezp.controller; import com.forezp.entity.Book; import io.swagger.annotations.ApiImplicitParam; import io.swagger.annotations.ApiImplicitParams; import io.swagger.annotations.ApiOperation; import org.springframework.ui.ModelMap; import org.springframework.web.bind.annotation.*; import springfox.documentation.annotations.ApiIgnore; import java.util.*; /** * 用戶創(chuàng)建某本圖書(shū) POST /books/ * 用戶修改對(duì)某本圖書(shū) PUT /books/:id/ * 用戶刪除對(duì)某本圖書(shū) DELETE /books/:id/ * 用戶獲取所有的圖書(shū) GET /books * 用戶獲取某一圖書(shū) GET /Books/:id * Created by fangzhipeng on 2017/4/17. * 官方文檔:http://swagger.io/docs/specification/api-host-and-base-path/ */ @RestController @RequestMapping(value = "/books") public class BookContrller { Mapbooks = Collections.synchronizedMap(new HashMap ()); @ApiOperation(value="獲取圖書(shū)列表", notes="獲取圖書(shū)列表") @RequestMapping(value={""}, method= RequestMethod.GET) public List getBook() { List book = new ArrayList<>(books.values()); return book; } @ApiOperation(value="創(chuàng)建圖書(shū)", notes="創(chuàng)建圖書(shū)") @ApiImplicitParam(name = "book", value = "圖書(shū)詳細(xì)實(shí)體", required = true, dataType = "Book") @RequestMapping(value="", method=RequestMethod.POST) public String postBook(@RequestBody Book book) { books.put(book.getId(), book); return "success"; } @ApiOperation(value="獲圖書(shū)細(xì)信息", notes="根據(jù)url的id來(lái)獲取詳細(xì)信息") @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "Long",paramType = "path") @RequestMapping(value="/{id}", method=RequestMethod.GET) public Book getBook(@PathVariable Long id) { return books.get(id); } @ApiOperation(value="更新信息", notes="根據(jù)url的id來(lái)指定更新圖書(shū)信息") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "圖書(shū)ID", required = true, dataType = "Long",paramType = "path"), @ApiImplicitParam(name = "book", value = "圖書(shū)實(shí)體book", required = true, dataType = "Book") }) @RequestMapping(value="/{id}", method= RequestMethod.PUT) public String putUser(@PathVariable Long id, @RequestBody Book book) { Book book1 = books.get(id); book1.setName(book.getName()); book1.setPrice(book.getPrice()); books.put(id, book1); return "success"; } @ApiOperation(value="刪除圖書(shū)", notes="根據(jù)url的id來(lái)指定刪除圖書(shū)") @ApiImplicitParam(name = "id", value = "圖書(shū)ID", required = true, dataType = "Long",paramType = "path") @RequestMapping(value="/{id}", method=RequestMethod.DELETE) public String deleteUser(@PathVariable Long id) { books.remove(id); return "success"; } @ApiIgnore//使用該注解忽略這個(gè)API @RequestMapping(value = "/hi", method = RequestMethod.GET) public String jsonTest() { return " hi you!"; } }
通過(guò)相關(guān)注解,就可以讓swagger2生成相應(yīng)的文檔。如果你不需要某接口生成文檔,只需要在加@ApiIgnore注解即可。需要說(shuō)明的是,如果請(qǐng)求參數(shù)在url上,@ApiImplicitParam 上加paramType = “path” 。
啟動(dòng)工程,訪問(wèn):http://localhost:8080/swagger... ,就看到swagger-ui:
整個(gè)集成過(guò)程非常簡(jiǎn)單,但是我看了相關(guān)的資料,swagger沒(méi)有做安全方面的防護(hù),可能需要我們自己做相關(guān)的工作。
四、參考資料swagger.io
Spring Boot中使用Swagger2構(gòu)建強(qiáng)大的RESTful API文檔
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://hztianpu.com/yun/70369.html
摘要:但是這種手寫(xiě)文檔帶來(lái)的弊端就是維護(hù)起來(lái)苦不堪言,對(duì)于接口容易發(fā)生變化的開(kāi)發(fā)者來(lái)說(shuō),維護(hù)文檔就是噩夢(mèng)好在現(xiàn)如今市場(chǎng)上書(shū)寫(xiě)文檔的工具有很多,常見(jiàn)的有阿里的但是能稱(chēng)之為框架的,估計(jì)也只有了。 SpringBoot 是為了簡(jiǎn)化 Spring 應(yīng)用的創(chuàng)建、運(yùn)行、調(diào)試、部署等一系列問(wèn)題而誕生的產(chǎn)物,自動(dòng)裝配的特性讓我們可以更好的關(guān)注業(yè)務(wù)本身而不是外部的XML配置,我們只需遵循規(guī)范,引入相關(guān)的依賴(lài)...
摘要:今天給你們帶來(lái)集成的教程。接口返回結(jié)果不明確。這些痛點(diǎn)在前后端分離的大型項(xiàng)目上顯得尤為煩躁。接口返回結(jié)果非常明確,包括數(shù)據(jù)類(lèi)型,狀態(tài)碼,錯(cuò)誤信息等。生成后的文件依賴(lài)如下這里使用的是的版本。另外,關(guān)注之后在發(fā)送可領(lǐng)取免費(fèi)學(xué)習(xí)資料。 微信公眾號(hào):一個(gè)優(yōu)秀的廢人如有問(wèn)題或建議,請(qǐng)后臺(tái)留言,我會(huì)盡力解決你的問(wèn)題。 前言 快過(guò)年了,不知道你們啥時(shí)候放年假,忙不忙。反正我是挺閑的,所以有時(shí)間寫(xiě) b...
摘要:對(duì)提供了很好的支持,對(duì)其做了起步依賴(lài)。構(gòu)架工程創(chuàng)建一個(gè)工程,在其文件加入添加配置在中填寫(xiě)自己的郵箱密碼。啟用設(shè)置附件發(fā)送郵件郵件已發(fā)送測(cè)試已全部通過(guò),沒(méi)有坑。 springboot對(duì)JMS提供了很好的支持,對(duì)其做了起步依賴(lài)。 構(gòu)架工程 創(chuàng)建一個(gè)springboot工程,在其pom文件加入: org.springframework.boot spring-boot-st...
閱讀 1483·2021-10-27 14:14
閱讀 3734·2021-09-29 09:34
閱讀 2620·2019-08-30 15:44
閱讀 1869·2019-08-29 17:13
閱讀 2698·2019-08-29 13:07
閱讀 1035·2019-08-26 18:26
閱讀 3472·2019-08-26 13:44
閱讀 3344·2019-08-26 13:37