目前解決API的方案一般有兩種
1.編寫文件介面。
2.利用一些現成的api系統。
3.如我一般想搞點特色的就自己寫個api系統:http://api.zhaobaolin.vip/ ,這個還支援多使用者。
但是無論哪一種,都逃不過一個麻煩事:如果程式碼有變化,必須手動維護文件,工作很忙的時候,根本沒時間去折騰文件,忙著忙著就忘了,然後前端就經常架著把菜刀站我身後。。。
自從遇到swagger之後 就如大旱逢甘露 他鄉遇故知 洞房花燭夜 金榜題名時.....
先用maven下載jar包:
<dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.6.1</version> </dependency> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.6.1</version> </dependency>
然後在Application同級建立Swagger2類:
@Configuration @EnableSwagger2 public class Swagger2 { @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.example.test")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("swagger2測試標題 請注意") .description("請記住我們親愛的度娘:https://www.baidu.com/") .version("1.0") .build(); } }
Controller控制器:
@Api(value = "TestController", description = "測試資料服務 API", tags = "TestController") @RestController @RequestMapping(value = "/Test") public class Test { @ApiOperation(value="請求的介面示例") @GetMapping(value = "/a") public String a() throws Exception{ Child child = new Child(); child.setAge("11"); child.setName("碼農"); return child.toString(); } @ApiOperation(value="輸入引數介面示例") @PostMapping(value = "/c") public String c(Child child) throws Exception { if(null == child || null == child.getName() || null == child.getAge()){ return "缺少引數"; } return child.toString(); } @ApiOperation(value="輸入json介面示例") @PostMapping(value = "/d") public String d(@RequestBody @ApiParam(name = "child", value = "json fromat") Child child) throws Exception { if(null == child){ return "引數錯誤"; } return child.toString(); }
實體類中required可標明是否必傳:
public class Child{ @ApiModelProperty(name = "name", value = "姓名", required = true) private String name; @ApiModelProperty(name = "age", value = "年齡", required = false) private String age; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getAge() { return age; } public void setAge(String age) { this.age = age; } @Override public String toString() { return "Child{" + "name='" + name + '\'' + ", age='" + age + '\'' + '}'; } }
訪問 http://localhost:9000/swagger-ui.html# 埠換成自定義的
效果上圖:
點選try it out 直接訪問除錯
必填欄位如果不輸入會被攔截
也可以json輸入 點選右邊的Json框 格式會自動進入輸入框 然後填值即可
感謝閱讀