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

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/ 鸣谢二位

 

共有 人打赏支持
粉丝 4
博文 15
码字总数 6307
×
OldCoffee
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: