Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓƵ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
SwaggerʹÓÃÖ¸ÄÏ
 
  9877  次浏览      17
 2019-3-26
 
±à¼­ÍƼö:

±¾ÎÄÀ´×ÔÓÚcsdn£¬±¾ÎÄÖ÷Òª½éÉÜÁËswaggerÅäÖÃÀàÀïÃæ,ÒªÅäÖÃ×Ô¼ºµÄcontroller°ü·¾¶ÒÔ¼°ÈçºÎʹÓÃswagger£¬Ï£Íû¶ÔÄúµÄѧϰÓÐËù°ïÖú¡£

1£ºÈÏʶSwagger

Swagger ÊÇÒ»¸ö¹æ·¶ºÍÍêÕûµÄ¿ò¼Ü£¬ÓÃÓÚÉú³É¡¢ÃèÊö¡¢µ÷ÓúͿÉÊÓ»¯ RESTful ·ç¸ñµÄ Web ·þÎñ¡£×ÜÌåÄ¿±êÊÇʹ¿Í»§¶ËºÍÎļþϵͳ×÷Ϊ·þÎñÆ÷ÒÔͬÑùµÄËÙ¶ÈÀ´¸üС£ÎļþµÄ·½·¨£¬²ÎÊýºÍÄ£ÐͽôÃܼ¯³Éµ½·þÎñÆ÷¶ËµÄ´úÂ룬ÔÊÐíAPIÀ´Ê¼ÖÕ±£³Öͬ²½¡£

×÷Óãº

1. ½Ó¿ÚµÄÎĵµÔÚÏß×Ô¶¯Éú³É¡£

2. ¹¦ÄܲâÊÔ¡£

SwaggerÊÇÒ»×鿪ԴÏîÄ¿£¬ÆäÖÐÖ÷ÒªÒªÏîÄ¿ÈçÏ£º

1. Swagger-tools:Ìṩ¸÷ÖÖÓëSwagger½øÐм¯³ÉºÍ½»»¥µÄ¹¤¾ß¡£ÀýÈçģʽ¼ìÑé¡¢Swagger 1.2Îĵµ×ª»»³ÉSwagger 2.0ÎĵµµÈ¹¦ÄÜ¡£

2. Swagger-core: ÓÃÓÚJava/ScalaµÄµÄSwaggerʵÏÖ¡£ÓëJAX-RS(Jersey¡¢Resteasy¡¢CXF...)¡¢ServletsºÍPlay¿ò¼Ü½øÐм¯³É¡£

3. Swagger-js: ÓÃÓÚJavaScriptµÄSwaggerʵÏÖ¡£

4. Swagger-node-express: SwaggerÄ£¿é£¬ÓÃÓÚnode.jsµÄExpress webÓ¦Óÿò¼Ü¡£

5. Swagger-ui£ºÒ»¸öÎÞÒÀÀµµÄHTML¡¢JSºÍCSS¼¯ºÏ£¬¿ÉÒÔΪSwagger¼æÈÝAPI¶¯Ì¬Éú³ÉÓÅÑÅÎĵµ¡£

6. Swagger-codegen£ºÒ»¸öÄ£°åÇý¶¯ÒýÇ棬ͨ¹ý·ÖÎöÓû§Swagger×ÊÔ´ÉùÃ÷ÒÔ¸÷ÖÖÓïÑÔÉú³É¿Í»§¶Ë´úÂë¡£

2£ºMaven

°æ±¾ºÅÇë¸ù¾Ýʵ¼ÊÇé¿ö×ÔÐиü¸Ä¡£

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger2</artifactId>

<version>2.2.2</version>

</dependency>

<dependency>

<groupId>io.springfox</groupId>

<artifactId>springfox-swagger-ui</artifactId>

<version>2.2.2</version>

</dependency>

3£º´´½¨Swagger2ÅäÖÃÀà

ÔÚApplication.javaͬ¼¶´´½¨Swagger2µÄÅäÖÃÀàSwagger2


package com.swaggerTest;

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.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

/**
* Swagger2ÅäÖÃÀà
* ÔÚÓëspring boot¼¯³Éʱ£¬·ÅÔÚÓëApplication.javaͬ¼¶µÄĿ¼Ï¡£
* ͨ¹ý@Configuration×¢½â£¬ÈÃSpringÀ´¼ÓÔظÃÀàÅäÖá£
* ÔÙͨ¹ý@EnableSwagger2×¢½âÀ´ÆôÓÃSwagger2¡£
*/
@Configuration
@EnableSwagger2
public class Swagger2 {

/**
* ´´½¨APIÓ¦ÓÃ
* apiInfo() Ôö¼ÓAPIÏà¹ØÐÅÏ¢
* ͨ¹ýselect()º¯Êý·µ»ØÒ»¸öApiSelectorBuilderʵÀý,ÓÃÀ´¿ØÖÆÄÄЩ½Ó¿Ú±©Â¶¸øSwaggerÀ´Õ¹ÏÖ£¬
* ±¾Àý²ÉÓÃÖ¸¶¨É¨ÃèµÄ°ü·¾¶À´¶¨ÒåÖ¸¶¨Òª½¨Á¢APIµÄĿ¼¡£
*
* @return
*/
@Bean
public Docket createRestApi() {
return new Docket(DocumentationType.SWAGGER_2)
.apiInfo(apiInfo())
.select()
.apis(RequestHandlerSelectors.basePackage("com.swaggerTest.controller"))
.paths(PathSelectors.any())
.build();
}

/**
* ´´½¨¸ÃAPIµÄ»ù±¾ÐÅÏ¢£¨ÕâЩ»ù±¾ÐÅÏ¢»áÕ¹ÏÖÔÚÎĵµÒ³ÃæÖУ©
* ·ÃÎʵØÖ·£ºhttp://ÏîĿʵ¼ÊµØÖ·/swagger-ui.html
* @return
*/
private ApiInfo apiInfo() {
return new ApiInfoBuilder()
.title("Spring BootÖÐʹÓÃSwagger2¹¹½¨RESTful APIs")
.description("¸ü¶àÇë¹Ø×¢http://www.baidu.com")
.termsOfServiceUrl("http://www.baidu.com")
.contact("sunf")
.version("1.0")
.build();
}
}

ÈçÉÏ´úÂëËùʾ£¬Í¨¹ýcreateRestApiº¯Êý´´½¨DocketµÄBeanÖ®ºó£¬apiInfo()ÓÃÀ´´´½¨¸ÃApiµÄ»ù±¾ÐÅÏ¢£¨ÕâЩ»ù±¾ÐÅÏ¢»áÕ¹ÏÖÔÚÎĵµÒ³ÃæÖУ©¡£

4£ºÌí¼ÓÎĵµÄÚÈÝ

ÔÚÍê³ÉÁËÉÏÊöÅäÖúó£¬ÆäʵÒѾ­¿ÉÒÔÉú²úÎĵµÄÚÈÝ£¬µ«ÊÇÕâÑùµÄÎĵµÖ÷ÒªÕë¶ÔÇëÇó±¾Éí£¬ÃèÊöµÄÖ÷ÒªÀ´Ô´ÊǺ¯ÊýµÄÃüÃû£¬¶ÔÓû§²¢²»ÓѺã¬ÎÒÃÇͨ³£ÐèÒª×Ô¼ºÔö¼ÓһЩ˵Ã÷À´·á¸»ÎĵµÄÚÈÝ¡£

SwaggerʹÓõÄ×¢½â¼°Æä˵Ã÷£º

@Api£ºÓÃÔÚÀàÉÏ£¬ËµÃ÷¸ÃÀàµÄ×÷Óá£

@ApiOperation£º×¢½âÀ´¸øAPIÔö¼Ó·½·¨ËµÃ÷¡£

@ApiImplicitParams : ÓÃÔÚ·½·¨ÉÏ°üº¬Ò»×é²ÎÊý˵Ã÷¡£

@ApiImplicitParam£ºÓÃÀ´×¢½âÀ´¸ø·½·¨Èë²ÎÔö¼Ó˵Ã÷¡£

@ApiResponses£ºÓÃÓÚ±íʾһ×éÏìÓ¦

@ApiResponse£ºÓÃÔÚ@ApiResponsesÖУ¬Ò»°ãÓÃÓÚ±í´ïÒ»¸ö´íÎóµÄÏìÓ¦ÐÅÏ¢

l code£ºÊý×Ö£¬ÀýÈç400

l message£ºÐÅÏ¢£¬ÀýÈç"ÇëÇó²ÎÊýûÌîºÃ"

l response£ºÅ׳öÒì³£µÄÀà

@ApiModel£ºÃèÊöÒ»¸öModelµÄÐÅÏ¢£¨Ò»°ãÓÃÔÚÇëÇó²ÎÊýÎÞ·¨Ê¹ÓÃ@ApiImplicitParam×¢½â½øÐÐÃèÊöµÄʱºò£©

l @ApiModelProperty£ºÃèÊöÒ»¸ömodelµÄÊôÐÔ

×¢Ò⣺@ApiImplicitParamµÄ²ÎÊý˵Ã÷£º

Àý×Ó£º


package com.swaggerTest.controller;

import org.springframework.stereotype.Controller;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;

import io.swagger.annotations.Api;
import io.swagger.annotations.ApiImplicitParam;
import io.swagger.annotations.ApiImplicitParams;
import io.swagger.annotations.ApiOperation;

/**
* Ò»¸öÓÃÀ´²âÊÔswagger×¢½âµÄ¿ØÖÆÆ÷
* ×¢Òâ@ApiImplicitParamµÄʹÓûáÓ°Ïì³ÌÐòÔËÐУ¬Èç¹ûʹÓò»µ±¿ÉÄÜÔì³É¿ØÖÆÆ÷ÊÕ²»µ½ÏûÏ¢
*
* @author SUNF
*/
@Controller
@RequestMapping("/say")
@Api(value = "SayController|Ò»¸öÓÃÀ´²âÊÔswagger×¢½âµÄ¿ØÖÆÆ÷")
public class SayController {

@ResponseBody
@RequestMapping(value ="/getUserName", method= RequestMethod.GET)
@ApiOperation(value="¸ù¾ÝÓû§±àºÅ»ñÈ¡Óû§ÐÕÃû", notes="test: ½ö1ºÍ2ÓÐÕýÈ··µ»Ø")
@ApiImplicitParam(paramType="query", name = "userNumber", value = "Óû§±àºÅ", required = true, dataType = "Integer")
public String getUserName(@RequestParam Integer userNumber){
if(userNumber == 1){
return "ÕÅÈý·á";
}
else if(userNumber == 2){
return "ĽÈݸ´";
}
else{
return "δ֪";
}
}

@ResponseBody
@RequestMapping("/updatePassword")
@ApiOperation(value="ÐÞ¸ÄÓû§ÃÜÂë", notes="¸ù¾ÝÓû§idÐÞ¸ÄÃÜÂë")
@ApiImplicitParams({
@ApiImplicitParam(paramType="query", name = "userId", value = "Óû§ID", required = true, dataType = "Integer"),
@ApiImplicitParam(paramType="query", name = "password", value = "¾ÉÃÜÂë", required = true, dataType = "String"),
@ApiImplicitParam(paramType="query", name = "newPassword", value = "ÐÂÃÜÂë", required = true, dataType = "String")
})
public String updatePassword(@RequestParam(value="userId") Integer userId, @RequestParam(value="password") String password,
@RequestParam(value="newPassword") String newPassword){
if(userId <= 0 || userId > 2){
return "δ֪µÄÓû§";
}
if(StringUtils.isEmpty(password) || StringUtils.isEmpty(newPassword)){
return "ÃÜÂë²»ÄÜΪ¿Õ";
}
if(password.equals(newPassword)){
return "оÉÃÜÂë²»ÄÜÏàͬ";
}
return "ÃÜÂëÐ޸ijɹ¦!";
}
}

Íê³ÉÉÏÊö´úÂëÌí¼ÓÉÏ£¬Æô¶¯Spring Boot³ÌÐò£¬·ÃÎÊ£ºhttp://localhost:8080/swagger-ui.html

ÈçÉÏͼ£¬¿ÉÒÔ¿´µ½±©Â©³öÀ´µÄ¿ØÖÆÆ÷ÐÅÏ¢£¬µã»÷½øÈë¿ÉÒÔ¿´µ½ÏêϸÐÅÏ¢¡£

Á½¸ö×¢Òâµã£º

1. paramType»áÖ±½ÓÓ°Ïì³ÌÐòµÄÔËÐÐÆÚ£¬Èç¹ûparamTypeÓë·½·¨²ÎÊý»ñȡʹÓõÄ×¢½â²»Ò»Ö£¬»áÖ±½ÓÓ°Ïìµ½²ÎÊýµÄ½ÓÊÕ¡£

ÀýÈ磺

ʹÓÃSawgger UI½øÐвâÊÔ£¬½ÓÊÕ²»µ½£¡

2. »¹ÓÐÒ»¸öÐèҪעÒâµÄµØ·½£º

ConntrollerÖж¨ÒåµÄ·½·¨±ØÐëÔÚ@RequestMapperÖÐÏÔʾµÄÖ¸¶¨RequestMethodÀàÐÍ£¬·ñÔòSawggerUi»áĬÈÏΪȫÀàÐͽԿɷÃÎÊ£¬ APIÁбíÖлáÉú³É¶àÌõÏîÄ¿¡£

ÈçÉÏͼ£ºupdatePassword()δָ¶¨requestMethod£¬½á¹ûÉú³ÉÁË7ÌõAPIÐÅÏ¢¡£ËùÒÔÈç¹ûûÓÐÌØÊâÐèÇ󣬽¨Òé¸ù¾Ýʵ¼ÊÇé¿ö¼ÓÉÏrequestMethod¡£

5£ºSwagger UIÃæ°å˵Ã÷

 

 

 
   
9877 ´Îä¯ÀÀ       17
Ïà¹ØÎÄÕÂ

΢·þÎñ²âÊÔÖ®µ¥Ôª²âÊÔ
һƪͼÎÄ´øÄãÁ˽â°×ºÐ²âÊÔÓÃÀýÉè¼Æ·½·¨
È«ÃæµÄÖÊÁ¿±£ÕÏÌåϵ֮»Ø¹é²âÊÔ²ßÂÔ
È˹¤ÖÇÄÜ×Ô¶¯»¯²âÊÔ̽Ë÷
Ïà¹ØÎĵµ

×Ô¶¯»¯½Ó¿Ú²âÊÔʵ¼ù֮·
jenkins³ÖÐø¼¯³É²âÊÔ
ÐÔÄܲâÊÔÕï¶Ï·ÖÎöÓëÓÅ»¯
ÐÔÄܲâÊÔʵÀý
Ïà¹Ø¿Î³Ì

³ÖÐø¼¯³É²âÊÔ×î¼Ñʵ¼ù
×Ô¶¯»¯²âÊÔÌåϵ½¨ÉèÓë×î¼Ñʵ¼ù
²âÊԼܹ¹µÄ¹¹½¨ÓëÓ¦ÓÃʵ¼ù
DevOpsʱ´úµÄ²âÊÔ¼¼ÊõÓë×î¼Ñʵ¼ù