Swagger与RestFul 集成 以及 注解使用Demo

准备工作:

1 按文档搭建Spring Boot 和 Swagger:  http://www.cnblogs.com/xiaohanghang/p/6018654.html
另附标准RestFul API规范: RestFul API规范

3  Swagger与标准RestFul(POST、PUT、DELETE、GET)集成Demo【以App应用模块为例】

/**
*App操作类,标准的RestFul接口
*/
@Api(value = "App操作类", description ="App相关操作接口定义类")
@RestController
@RequestMapping(value = "/apps")
public classBdAppController {
    @Autowired
    BdAppServicebdAppService;//AutowiredService

    //1 POST --- URL:/apps
    @ApiOperation(value = "创建", notes ="")
    @ApiImplicitParam(name = "app", value = "创建", required =true, dataType ="App")
    @RequestMapping(method = RequestMethod.POST)
    publicApp release(@RequestBodyApp app){
        //todo
        reutrn app;
    }
}
或:
@ApiOperation(value = "创建", notes = "")
@RequestMapping(value = "/release",method = RequestMethod.POST)
public ResponseData newApp(
    @ApiParam(name="app",value="产品临时对象",required = true) 
    @RequestBodyApp app){
    //todo
    reutrn app; 
}

//2 GET (多条件查询分页)--- URL:/apps

@ApiOperation(value = "应用查询", notes = "")
@ApiImplicitParams(value = {
    @ApiImplicitParam(paramType = "query", name = "appType", dataType = "String", required = true, value = "应用类型", defaultValue = "10"),
    @ApiImplicitParam(paramType = "query", name = "appClassId", dataType = "String", required = true, value = "应用分类id"),
    @ApiImplicitParam(paramType = "query", name = "appId", dataType = "String", required = true, value = "appId"),
    @ApiImplicitParam(paramType = "query", name = "appName", dataType = "String", value = "应用名称"),
    @ApiImplicitParam(paramType = "query", name = "appStatus", dataType = "String", required = true, value = "状态 0:已下架 1:正常"),
    @ApiImplicitParam(paramType = "query",name = "page", value = "当前页码", required = true, dataType = "integer"),
    @ApiImplicitParam(paramType = "query",name = "rows", value = "每页条数", required = true, dataType = "integer")
})
@RequestMapping(method = RequestMethod.GET)
public App list(@RequestParam("appType") String appType,
                @RequestParam("appClassId") String appClassId,
                @RequestParam("appId") String appId,@RequestParam("appName") String appName,
                @RequestParam("appStatus") String appStatus,
                @RequestParam(name = "page", defaultValue = "1") int page,
                @RequestParam(name = "rows", defaultValue = "10") int rows) {
    //todo
return 按规范自己封装; 
}

//3 get ---url/{appid}

@ApiOperation(value = "获取产品详情", notes = "产品详情") 
@ApiImplicitParam(paramType = "path", name = "appId", value = "产品appId", 
                  required = true, dataType = "String") 
@RequestMapping(value = "/{appId}", method = RequestMethod.GET) 
private App getAppDetail(@PathVariable("appId") String appId) { 
    //todo
    return 按规范自己封装;
}

//4 PUT --URL/{appId} and RequestBody
@ApiOperation(value="update", notes="") 
@ApiImplicitParams(
    value={ 
        @ApiImplicitParam(paramType="path",name="appId",value="",
                          required=true,dataType = "String"), 
        @ApiImplicitParam(name="app",value ="App",
                          required=true,dataType ="App") 
}) 
@RequestMapping(value="/{appId}",method =RequestMethod.PUT, 
                consumes = MediaTypes.JSON_UTF_8) 
public App Appupdate(@PathVariable(value = "appId") String appId,
                     @RequestBody App app) {
    //todo
    return 按规范自己封装;
}

//Post Many app objects
@ApiOperation(value="创建多条APPs", notes="")
@RequestMapping(value="/postApps", method=RequestMethod.POST)
public String postApps(@ApiParam(name="apps",value="用户s",required = true) 
                       @RequestBody List<App> apps) {
    System.out.print(apps);
    return "success";
}
4 常见swagger注解一览与使用
 
最常用的5个注解
@Api :修饰整个类,描述Controller的作用
@ApiOperation :描述一个类的一个方法,或者说一个接口
@ApiParam :单个参数描述

@ApiModel :用对象来接收参数
@ApiProperty :用对象接收参数时,描述对象的一个字段
其它若干 @ApiResponse :HTTP响应其中 1 个描述
@ApiResponses :HTTP响应整体描述
@ApiIgnore :使用该注解忽略这个API
@ApiClass
@ApiError @ApiErrors
@ApiParamImplicit @ApiParamsImplicit
/**
@ApiParam:  
* Adds additional meta-data for operation parameters. 
* <p/> 
* This annotation can be used only in combination of JAX-RS 1.x/2.x annotations. 
*/


/**
@ApiParamImplicit:  
* Represents a single parameter in an API Operation. <p/> 
* While {@link ApiParam} is bound to a JAX-RS parameter, 
* method or field, this allows you to manually define a parameter in a fine-tuned manner. 
* This is the only way to define parameters when using Servlets or other non-JAX-RS 
* environments. 
* <p/> 
* This annotation must be used as a value of {@link ApiImplicitParams} 
* in order to be parsed. 
* * @see ApiImplicitParams 
*/
 
   
5 Swagger 使用参考网址
Swagger RESTful API Documentation Specification:
Swagger 注解使用 微服务之Swagger - 沧海一滴 - 博客园 有什么问题请指正。。。。。

  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
以下是一个使用Spring Boot集成Swagger2和Knife4j的示例: 首先,在`pom.xml`文件中添加以下依赖项: ```xml <!-- Swagger2 --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <version>2.9.2</version> </dependency> <!-- Swagger UI --> <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger-ui</artifactId> <version>2.9.2</version> </dependency> <!-- Knife4j --> <dependency> <groupId>com.github.xiaoymin</groupId> <artifactId>knife4j-spring-boot-starter</artifactId> <version>2.0.2</version> </dependency> ``` 接下来,在Spring Boot的启动类中加上Swagger2和Knife4j的相关注解。示例中的启动类为`DemoApplication.java`: ```java import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.Bean; 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; @SpringBootApplication @EnableSwagger2 public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } @Bean public Docket api() { return new Docket(DocumentationType.SWAGGER_2) .apiInfo(apiInfo()) .select() .apis(RequestHandlerSelectors.basePackage("com.example.demo.controller")) .paths(PathSelectors.any()) .build(); } private ApiInfo apiInfo() { return new ApiInfoBuilder() .title("Demo API") .description("API documentation for demo project") .version("1.0") .build(); } } ``` 在上述代码中,我们通过`@EnableSwagger2`注解启用Swagger2,并创建了一个`Docket` bean来配置Swagger2的基本信息。 接下来,在控制器类中使用Swagger2的注解来定义API文档。示例中的控制器类为`DemoController.java`: ```java import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/api") @Api(tags = "Demo API") public class DemoController { @GetMapping("/hello") @ApiOperation(value = "Say hello", notes = "Returns a greeting message") public String sayHello() { return "Hello, Swagger!"; } } ``` 在上述代码中,我们使用Swagger2的注解`@Api`和`@ApiOperation`来定义API的标签、描述和操作。 最后,运行Spring Boot应用程序,并访问`http://localhost:8080/doc.html`即可查看生成的API文档。你将看到Swagger2和Knife4j提供的界面,展示了API的详细信息。 这就是一个简单的Spring Boot集成Swagger2和Knife4j的示例。你可以根据实际需求进行配置和扩展。希望对你有所帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值