用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字

park    -  云代码空间

——

企业级 SpringBoot 教程 (十一)springboot集成swagger2,构建优雅的Re

2019-03-07|555阅||

摘要:企业级 SpringBoot 教程 (十一)springboot集成swagger2,构建优雅的Restful API

swagger,中文“拽”的意思。它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试。另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字。

一、引入依赖

<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> 

 

 

二、写配置类

@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构建api文档")
                .description("简单优雅的restfun风格,http://blog.csdn.net/forezp")
                .termsOfServiceUrl("http://blog.csdn.net/forezp")
                .version("1.0")
                .build();
    }
} 

 

通过@Configuration注解,表明它是一个配置类,@EnableSwagger2开启swagger2。apiINfo()配置一些基本的信息。apis()指定扫描的包会生成文档。

三、写生产文档的注解

swagger通过注解表明该接口会生成文档,包括接口名、请求方法、参数、返回信息的等等。

  • @Api:修饰整个类,描述Controller的作用
  • @ApiOperation:描述一个类的一个方法,或者说一个接口
  • @ApiParam:单个参数描述
  • @ApiModel:用对象来接收参数
  • @ApiProperty:用对象接收参数时,描述对象的一个字段
  • @ApiResponse:HTTP响应其中1个描述
  • @ApiResponses:HTTP响应整体描述
  • @ApiIgnore:使用该注解忽略这个API
  • @ApiError :发生错误返回的信息
  • @ApiParamImplicitL:一个请求参数
  • @ApiParamsImplicit 多个请求参数

现在通过一个栗子来说明:

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.*; /**
 * 用户创建某本图书 POST    /books/
 * 用户修改对某本图书    PUT /books/:id/
 * 用户删除对某本图书    DELETE  /books/:id/
 * 用户获取所有的图书 GET /books
 *  用户获取某一图书  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 {

    Map<Long, Book> books = Collections.synchronizedMap(new HashMap<Long, Book>()); @ApiOperation(value="获取图书列表", notes="获取图书列表") @RequestMapping(value={""}, method= RequestMethod.GET) public List<Book> getBook() {
        List<Book> book = new ArrayList<>(books.values()); return book;
    } @ApiOperation(value="创建图书", notes="创建图书") @ApiImplicitParam(name = "book", value = "图书详细实体", required = true, dataType = "Book") @RequestMapping(value="", method=RequestMethod.POST) public String postBook(@RequestBody Book book) {
        books.put(book.getId(), book); return "success";
    } @ApiOperation(value="获图书细信息", notes="根据url的id来获取详细信息") @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="根据url的id来指定更新图书信息") @ApiImplicitParams({ @ApiImplicitParam(name = "id", value = "图书ID", required = true, dataType = "Long",paramType = "path"), @ApiImplicitParam(name = "book", value = "图书实体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="删除图书", notes="根据url的id来指定删除图书") @ApiImplicitParam(name = "id", value = "图书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//使用该注解忽略这个API @RequestMapping(value = "/hi", method = RequestMethod.GET) public String jsonTest() { return " hi you!";
    }
} 

 

 

通过相关注解,就可以让swagger2生成相应的文档。如果你不需要某接口生成文档,只需要在加@ApiIgnore注解即可。需要说明的是,如果请求参数在url上,@ApiImplicitParam 上加paramType = “path” 。

资料和源码来源地址

Spring Cloud大型企业分布式微服务云架构源码请加企鹅求求:yuncode.net
顶 0踩 0收藏
文章评论
    发表评论

    个人资料

    • 昵称: park
    • 等级: 初级设计师
    • 积分: 2125
    • 代码: 1 个
    • 文章: 72 篇
    • 随想: 0 条
    • 访问: 8 次
    • 关注

    标签

    MVC(8)api(1)教程(8)Spring(3)cache(1)Springmvc+(1)JEESZ(1)分布式缓存Redis(1)+mybatis(8)+shiro+(4)Activiti(4)+(6)dubbo(1)java企业架构(1)mvc配置(2)JEESZ分布式框架(1)JEESZ分布式框架(1)详细介绍(1)精华【分布式、微服务(1)RestFul服务介(1)Centos下单节点(1)JEESZ-Redi(1)springmvc整(1)JEESZ-kafk(1)Zookeeper集(1)JEESZ分布式架构(1)SSO解决方案(1)(一)构建dubbo(1)(二)构建dubbo(1)(三)构建dubbo(1)(四)构建dubbo(1)(五)构建dubbo(1)FastDFS分布式(1)FastDFS安装、(1)J2EE分布式框架-(1)Springmvc+(1)j2ee分布式架构核(2)dbcp数据源+jd(1)SSM框架——详细整(1)DUBBO与ZOOK(1)(六)(1)构建dubbo分布式(1)(七)(1)构建dubbo分布式(1)(八)(1)构建dubbo分布式(1)(九)(1)构建dubbo分布式(1)(十)(1)构建dubbo分布式(1)(十一)(1)构建dubbo分布式(1)(十二)(1)构建dubbo分布式(1)定义一个http(1)restful服务返(1)(十三)(1)构建dubbo分布式(1)springmvc+(1)分布式架构sprin(1)分布式服务:spri(1)Dubbo+Zook(1)springmvc+(1)一句话讲清楚什么是J(1)【分享】微服务分布式(1)Springmvc+(1)Kafka入门经典教(1)【推荐】微服务大型分(1)Springmvc+(1)手把手Maven搭建(1)分布式服务:spri(1)Dubbo+Zook(1)分布式架构sprin(1)(十四)(1)构建dubbo分布式(1)(十五)(1)构建dubbo分布式(1)Springmvc+(1)j2ee分布式架构核(1)dbcp数据源+jd(1)(十六)(1)构建dubbo分布式(1)(十七)(1)构建dubbo分布式(1)构建springmv(1)构建springmv(1)构建springmv(1)【企业级框架整合】S(1)springmvc整(1)DUBBO与ZOOK(1)【分享】微服务分布式(1)Springmvc+(1)JEESZ分布式框架(1)分布式架构sprin(1)分布式服务:spri(1)Dubbo+Zook(1)分布式架构sprin(1)SpringBoot(8)企业级(8)(十)用spring(1)(六)springb(1)(七)springb(1)(八)springb(1)(九)springb(1)Restdocs创建(1)(十一)spring(1)(十二)spring(1)(十三)spring(1)

    最新提问

      站长推荐