文档章节

SPRING启动RESTFUL API文档与SWAGGER 2

OldCoffee
 OldCoffee
发布于 2017/09/07 13:53
字数 757
阅读 22
收藏 0

#程序员薪资揭榜#你做程序员几年了?月薪多少?发量还在么?>>>

Swagger 2是一个开源项目,用于描述和记录RESTful API。Swagger 2与语言无关,可扩展到HTTP之外的新技术和协议。当前版本定义了一组HTML,JavaScript和CSS资产,以从符合Swagger的API动态生成文档。这些文件由Swagger UI项目捆绑在一起,以便在浏览器上显示API。除了渲染文档外,Swagger UI允许其他API开发人员或消费者与API的资源进行交互,而无需执行任何实现逻辑。

首先在 pom中 加入 swagger2依赖--如下:

<!--pom.xml中加入Swagger2的依赖-->
<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>
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-test</artifactId>
   <version>1.4.2.RELEASE</version>
   <scope>test</scope>
</dependency>

 

在这个控制器中,Spring 4.0引入的 @ RestController注释将ProductController标记 为REST API控制器。在引擎盖下, @ RestController作为一个方便的注释,用@ 控制器和 @ ResponseBody来注释类 。

@RestController
@RequestMapping(value="/users")     // 通过这里配置使下面的映射都在/users下,可去除
public class UserController {
    static Map<Long, User> users = Collections.synchronizedMap(new HashMap<Long, User>());
    @ApiOperation(value="获取用户列表", notes="")
    @RequestMapping(value={""}, method=RequestMethod.GET)
    public List<User> getUserList() {
        List<User> r = new ArrayList<User>(users.values());
        return r;
    }
    @ApiOperation(value="创建用户", notes="根据User对象创建用户")
    @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
    @RequestMapping(value="", method=RequestMethod.POST)
    public String postUser(@RequestBody User user) {
        users.put(user.getId(), user);
        return "success";
    }
    @ApiOperation(value="获取用户详细信息", notes="根据url的id来获取用户详细信息")
    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
    @RequestMapping(value="/{id}", method=RequestMethod.GET)
    public User getUser(@PathVariable Long id) {
        return users.get(id);
    }
    @ApiOperation(value="更新用户详细信息", notes="根据url的id来指定更新对象,并根据传过来的user信息来更新用户详细信息")
    @ApiImplicitParams({
            @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long"),
            @ApiImplicitParam(name = "user", value = "用户详细实体user", required = true, dataType = "User")
    })
    @RequestMapping(value="/{id}", method=RequestMethod.PUT)
    public String putUser(@PathVariable Long id, @RequestBody User user) {
        User u = users.get(id);
        u.setName(user.getName());
        u.setAge(user.getAge());
        users.put(id, u);
        return "success";
    }
    @ApiOperation(value="删除用户", notes="根据url的id来指定删除对象")
    @ApiImplicitParam(name = "id", value = "用户ID", required = true, dataType = "Long")
    @RequestMapping(value="/{id}", method=RequestMethod.DELETE)
    public String deleteUser(@PathVariable Long id) {
        users.remove(id);
        return "success";
    }
}

 

在应用程序中配置Swagger 2

@Configuration
@EnableSwagger2
public class Swagger2 {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.huangyf"))
                .paths(PathSelectors.any())
                .build();
    }

}

其中 basePackage 是指定 包名

最后打开 http://localhost:8080/swagger-ui.html 就能看到效果了

此次 参考 https://springframework.guru/spring-boot-restful-api-documentation-with-swagger-2/#comment-2134
以及 http://blog.didispace.com/springbootswagger2/ 鸣谢二位

 

© 著作权归作者所有

OldCoffee
粉丝 4
博文 19
码字总数 5990
作品 0
杭州
程序员
私信 提问
加载中

评论(0)

springMVC项目中引入swagger2,展示RESTful API

为什么用swagger2?swagger1和2试用对比 在springMVC项目中引入swagger2 springfox与swagger的关系 对第2步配置的说明 1.为什么用swagger2?swagger1和2试用对比 试用过swagger-springmvc和s...

osc_2oi3ausc
2018/06/08
12
0
Spring Boot中使用Swagger2生成RESTful API文档(转)

效果如下图所示: 添加Swagger2依赖 在中加入Swagger2的依赖 注意:如果是2.2版本的,有可能在右下角会出现错误,那么请升级为2.7版本的即可解决这个问题。 创建Swagger2配置类 在同级创建S...

easonjim
2017/09/13
0
0
Swagger2与Spring REST Docs

编者注 之前让其他写服务端的小伙伴支持swagger,然后最近一直在写Unity,没有把之前的项目和Swagger进行集成 Swagger Core Swagger Core Git Swagger 2.X 快速开始 注意:Swagger 2.x 遵循O...

抢小孩糖吃
2019/02/21
302
0
Spring集成Swagger

1.1 Swagger 是一个简单、强大的 Restful API 文档生成管理工具.   通过 swagger-spring 项目实现了与 Sping MVC 框架的无缝集成功能,方便生成 spring restful 风格的接口文档,在项目中集...

osc_ld3u7lka
2018/07/27
11
0
Spring boot 多模块项目 + Swagger 让你的API可视化

Spring boot 多模块项目 + Swagger 让你的API可视化 前言 手写 Api 文档的几个痛点: 文档需要更新的时候,需要再次发送一份给前端,也就是文档更新交流不及时。 接口返回结果不明确 不能直接...

osc_keofad7g
2019/03/27
5
0

没有更多内容

加载失败,请刷新页面

加载更多

2020中台建设-技术中台的搭建和运营

2020中台建设-技术中台的搭建和运营

Original123
9分钟前
3
0
CTO:不要在 Java 代码中写 set/get 方法了,逮一次罚款

前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态。在 Java 中,要保证封装性,需要将成员变量...

码农突围
19分钟前
21
0
为什么不推荐去做安全测试工程师?

对,你没看错。我不推荐大家去做安全测试工程师。 为什么不推荐大家去做安全测试? 今天,很多软件并没有经过专门的安全测试便运行在互联网上,它们携带着各类安全漏洞直接暴露在公众面前,其...

爱码小哥
36分钟前
32
0
Go Gin 简明教程

https://geektutu.com/post/quick-go-gin.html

Java搬砖工程师
今天
19
0
如何更改远程Git存储库的URI(URL)? - How to change the URI (URL) for a remote Git repository?

问题: I have a repo (origin) on a USB key that I cloned on my hard drive (local). 我在硬盘驱动器(本地)上克隆的USB密钥上有一个回购(来源)。 I moved "origin" to a NAS and succ......

技术盛宴
今天
26
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部