{"id":623,"date":"2019-08-24T17:29:53","date_gmt":"2019-08-24T09:29:53","guid":{"rendered":"http:\/\/prayerlaputa.com\/?p=623"},"modified":"2019-08-24T17:29:53","modified_gmt":"2019-08-24T09:29:53","slug":"spring-boot%e6%95%b4%e5%90%88swagger","status":"publish","type":"post","link":"http:\/\/prayerlaputa.com\/?p=623","title":{"rendered":"spring boot\u6574\u5408swagger"},"content":{"rendered":"<p>\u672c\u6587\u4ec5\u5c55\u793a\u603b\u4f53\u914d\u7f6e\uff0c\u5177\u4f53\u6ce8\u89e3\u7528\u6cd5\u8bf7\u53e6\u884c\u641c\u7d22\u3001\u67e5\u8be2\u3002<\/p>\n<h2>1.\u52a0\u4e0amaven\u4f9d\u8d56\uff0c\u5f15\u5165\u76f8\u5173\u5305<\/h2>\n<pre class=\"brush: plain; title: ; notranslate\" title=\"\">&lt;\/pre&gt;\r\n&lt;pre&gt;&lt;dependency&gt;\r\n    &lt;groupId&gt;io.springfox&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;springfox-swagger2&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.9.2&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;io.springfox&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;springfox-swagger-ui&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.9.2&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!-- https:\/\/mvnrepository.com\/artifact\/io.swagger.core.v3\/swagger-annotations --&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;io.swagger.core.v3&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;swagger-annotations&lt;\/artifactId&gt;\r\n    &lt;version&gt;2.0.8&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!-- http:\/\/localhost:18004\/doc.html --&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;com.github.xiaoymin&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;swagger-bootstrap-ui&lt;\/artifactId&gt;\r\n    &lt;version&gt;1.8.8&lt;\/version&gt;\r\n&lt;\/dependency&gt;\r\n&lt;!-- Swagger\u7528\u4e86\u9ad8\u7248\u672c\u7684 --&gt;\r\n&lt;dependency&gt;\r\n    &lt;groupId&gt;com.google.guava&lt;\/groupId&gt;\r\n    &lt;artifactId&gt;guava&lt;\/artifactId&gt;\r\n    &lt;version&gt;28.0-jre&lt;\/version&gt;\r\n&lt;\/dependency&gt;&lt;\/pre&gt;\r\n&lt;pre&gt;<\/pre>\n<p><!--more--><\/p>\n<h2>2.spring boot\u9879\u76ee\u4e2d\u52a0\u5165\u914d\u7f6e\u7c7b<\/h2>\n<p>\u6dfb\u52a0\u4e00\u4e2a\u914d\u7f6e\u5bf9\u8c61\uff0c\u5927\u4f53\u4ee3\u7801\u5982\u4e0b\uff1a<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\npackage com.demo.config;\r\n\r\nimport org.springframework.context.annotation.Bean;\r\nimport org.springframework.context.annotation.Configuration;\r\nimport org.springframework.context.annotation.Profile;\r\n\r\nimport io.swagger.annotations.Api;\r\nimport springfox.documentation.builders.ApiInfoBuilder;\r\nimport springfox.documentation.builders.PathSelectors;\r\nimport springfox.documentation.builders.RequestHandlerSelectors;\r\nimport springfox.documentation.service.ApiInfo;\r\nimport springfox.documentation.service.Contact;\r\nimport springfox.documentation.spi.DocumentationType;\r\nimport springfox.documentation.spring.web.plugins.Docket;\r\nimport springfox.documentation.swagger2.annotations.EnableSwagger2;\r\n\r\n\/**\r\n* Swagger2\u914d\u7f6e\r\n* http:\/\/localhost:18005\/swagger-ui.html\r\n* http:\/\/localhost:18005\/doc.html\r\n*\/\r\n@Configuration\r\n@EnableSwagger2\r\n@Profile({&quot;dev&quot;, &quot;pre&quot;})\r\nclass SwaggerConfig {\r\n\/**\r\n* swagger2\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u8fd9\u91cc\u53ef\u4ee5\u914d\u7f6eswagger2\u7684\u4e00\u4e9b\u57fa\u672c\u7684\u5185\u5bb9\uff0c\u6bd4\u5982\u626b\u63cf\u7684\u5305\u7b49\u7b49\r\n*\/\r\n@Bean\r\npublic Docket createRestApi() {\r\nreturn new Docket(DocumentationType.SWAGGER_2)\r\n.apiInfo(apiInfo())\r\n.select()\r\n.apis(RequestHandlerSelectors.withClassAnnotation(Api.class))\r\n\/\/\u4e3a\u5f53\u524d\u5305\u8def\u5f84\r\n\/\/.apis(RequestHandlerSelectors.basePackage(&quot;com.br.demo.controller&quot;))\r\n.paths(PathSelectors.any())\r\n.build();\r\n}\r\n\r\n\/**\r\n* \u6784\u5efa api\u6587\u6863\u7684\u8be6\u7ec6\u4fe1\u606f\u51fd\u6570\r\n*\/\r\nprivate ApiInfo apiInfo() {\r\nApiInfo apiInfo = new ApiInfoBuilder()\r\n\/\/\u9875\u9762\u6807\u9898\r\n.title(&quot;\u8d26\u52a1\u7cfb\u7edf\u63a5\u53e3API\u6587\u6863&quot;)\r\n\/\/\u521b\u5efa\u4eba\r\n.contact(new Contact(&quot;xx&quot;, &quot;http:\/\/xx.100credit.cn&quot;, &quot;xx@100credit.com&quot;))\r\n\/\/\u7248\u672c\u53f7\r\n.version(&quot;1.0&quot;)\r\n\/\/\u63cf\u8ff0\r\n.description(&quot;\u8d26\u52a1\u7cfb\u7edf\u63a5\u53e3\u5927\u5168&quot;)\r\n.build();\r\nreturn apiInfo;\r\n}\r\n}\r\n\r\n\r\n<\/pre>\n<h2>3.\u7528\u5404\u79cd\u6ce8\u89e3\u52a0\u5165\u63a5\u53e3\u8bf4\u660e<\/h2>\n<p>\u4f8b\u5982controller<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nimport javax.annotation.Resource;\r\n\r\nimport org.springframework.web.bind.annotation.PostMapping;\r\nimport org.springframework.web.bind.annotation.RequestBody;\r\nimport org.springframework.web.bind.annotation.RequestMapping;\r\nimport org.springframework.web.bind.annotation.RestController;\r\n\r\nimport com.demo.bean.model.User;\r\nimport com.demo.common.result.Result;\r\nimport com.demo.common.result.ResultUtils;\r\nimport com.demo.controller.BaseController;\r\nimport com.demo.service.UserService;\r\n\r\nimport io.swagger.annotations.Api;\r\nimport io.swagger.annotations.ApiImplicitParam;\r\nimport io.swagger.annotations.ApiOperation;\r\n\r\n@RestController\r\n@RequestMapping(&quot;api\/user&quot;)\r\n@Api(&quot;UserController\u76f8\u5173\u7684api&quot;)\r\npublic class UserController extends BaseController {\r\n\r\n@Resource\r\nprivate UserService userService;\r\n\r\n@ApiOperation(value = &quot;\u67e5\u8be2\u7528\u6237&quot;, notes = &quot;\u83b7\u5f97\u7528\u6237\u4fe1\u606f&quot;)\r\n@PostMapping(&quot;\/getUser&quot;)\r\nprivate Result&lt;User&gt; getUser(User user) {\r\nUser userResult = new User();\r\nuserResult.setName(&quot;xx&quot;);\r\nuserResult.setEmail(&quot;xx@qq.com&quot;);\r\nreturn ResultUtils.succeed(userResult);\r\n}\r\n}\r\n\r\n<\/pre>\n<p>\u5b9e\u4f53\u7c7b\u793a\u4f8b\uff1a<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\nModel\u6a21\u578b\u7c7b\r\n\r\nimport io.swagger.annotations.ApiModel;\r\nimport io.swagger.annotations.ApiModelProperty;\r\nimport lombok.Data;\r\n\r\n@ApiModel(&quot;\u7528\u6237\u5b9e\u4f53\u7c7b&quot;)\r\n@Data\r\npublic class User {\r\n\r\n@ApiModelProperty(name=&quot;name&quot;,value=&quot;\u7528\u6237\u540d&quot;,required=true)\r\nprivate String name;\r\n\r\n@ApiModelProperty(name=&quot;email&quot;,value=&quot;\u90ae\u7bb1&quot;,required=false)\r\nprivate String email;\r\n}\r\n\r\n<\/pre>\n<h2>4. \u6548\u679c<\/h2>\n<p><img loading=\"lazy\" class=\"alignnone size-medium wp-image-627\" src=\"http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe1-300x222.png\" alt=\"\" width=\"300\" height=\"222\" srcset=\"http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe1-300x222.png 300w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe1-768x569.png 768w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe1-1024x758.png 1024w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe1.png 1036w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-medium wp-image-628\" src=\"http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe2-300x258.png\" alt=\"\" width=\"300\" height=\"258\" srcset=\"http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe2-300x258.png 300w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe2-768x661.png 768w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe2.png 819w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<p><img loading=\"lazy\" class=\"alignnone size-medium wp-image-629\" src=\"http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe3-300x177.png\" alt=\"\" width=\"300\" height=\"177\" srcset=\"http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe3-300x177.png 300w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe3-768x454.png 768w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe3-1024x606.png 1024w, http:\/\/prayerlaputa.com\/wp-content\/uploads\/2019\/08\/swagger\u622a\u56fe3.png 1302w\" sizes=\"(max-width: 300px) 100vw, 300px\" \/><\/p>\n<h2>5. \u5982\u679c\u914d\u7f6e\u4e86shiro\u6216\u662f\u62e6\u622a\u5668\uff0c\u6ce8\u610f\u9700\u8981\u6253\u5f00\u76f8\u5173\u6743\u9650<\/h2>\n<p>\u4ee5shiro\u4e3a\u4f8b\uff0c\u9700\u505a\u5982\u4e0b\u914d\u7f6e\uff1a<\/p>\n<pre class=\"brush: java; title: ; notranslate\" title=\"\">\r\n\r\n\/\/\u5bf9swagger2\u76f8\u5173\u63a5\u53e3\u653e\u884c\uff0c5\u4e2a\u914d\u7f6e\r\nfilterChainDefinitionMap.put(&quot;\/doc.html&quot;, &quot;anon&quot;);\r\nfilterChainDefinitionMap.put(&quot;\/swagger-ui.html&quot;, &quot;anon&quot;);\r\nfilterChainDefinitionMap.put(&quot;\/swagger-resources\/**&quot;, &quot;anon&quot;);\r\nfilterChainDefinitionMap.put(&quot;\/v2\/api-docs\/**&quot;, &quot;anon&quot;);\r\nfilterChainDefinitionMap.put(&quot;\/webjars\/springfox-swagger-ui\/**&quot;, &quot;anon&quot;);\r\n\r\n<\/pre>\n<h2>6. swagger\u63a5\u53e3\u663e\u793a\u5730\u5740<\/h2>\n<ul>\n<li>http:\/\/ip:\u7aef\u53e3\/swagger-ui.html\u00a0\u00a0 Swagger\u5b98\u65b9UI<\/li>\n<li>http:\/\/ip:\u7aef\u53e3\/\/doc.html\u00a0 \u00a0\u7b2c\u4e09\u65b9Bootstarp\u76ae\u80a4\u7684UI<\/li>\n<\/ul>\n<h2>7.\u53c2\u8003\u6587\u6863<\/h2>\n<p>swagger2 \u6ce8\u89e3\u8bf4\u660e ( @ApiImplicitParams )<br \/>\nhttps:\/\/blog.csdn.net\/jiangyu1013\/article\/details\/83107255<\/p>\n<p>spring boot\u9879\u76ee\u4e2d\u4f7f\u7528swagger2<br \/>\nhttps:\/\/www.jianshu.com\/p\/05be40b9a7a3<\/p>\n<p>spring boot \u6574\u5408 swagger2,\u5e76\u8bbe\u7f6epost,get\u8bf7\u6c42\u65b9\u5f0f<br \/>\nhttps:\/\/blog.csdn.net\/qq_36249132\/article\/details\/90109815<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u672c\u6587\u4ec5\u5c55\u793a\u603b\u4f53\u914d\u7f6e\uff0c\u5177\u4f53\u6ce8\u89e3\u7528\u6cd5\u8bf7\u53e6\u884c\u641c\u7d22\u3001\u67e5\u8be2\u3002 1.\u52a0\u4e0amaven\u4f9d\u8d56\uff0c\u5f15\u5165\u76f8\u5173\u5305<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[5,14,15],"tags":[33,46,47],"_links":{"self":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts\/623"}],"collection":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=623"}],"version-history":[{"count":5,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts\/623\/revisions"}],"predecessor-version":[{"id":631,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=\/wp\/v2\/posts\/623\/revisions\/631"}],"wp:attachment":[{"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=623"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=623"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/prayerlaputa.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=623"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}