swagger使用及源码分析

Swagger是一个用于生成和管理RESTful API的工具,本文介绍了Swagger的基本原理、使用方法(基于spring-mvc)、常用注解及源码分析。通过添加注解和配置,可以在后端定义API并前端可视化。此外,文章还探讨了Swagger的类结构和核心组件的工作流程。
摘要由CSDN通过智能技术生成

Swagger 是一个用于生成、描述、调用和可视化 RESTful 风格的 Web 服务。Swagger 让部署管理和使用功能强大的API从未如此简单。
下面会从基本原理、如何使用(基于spring-mvc)、常用注解 、源码分析四个部分进行分析.

基本原理

web开发过程中,api定义是前后端交互最基本也是最重要的信息,而在实践过程中,往往是更新了代码,而没有来得及更新aip,导致api与代码不对应,进而延误进度。而swagger正好用来描述项目api,在后端定义,在前端可视化api,其前后端交互的契约为json格式的api信息. 详细的前后端api描述信息可参考Swagger RESTful API Documentation Specification
描述信息分两类,一类是resource listing,另一类是 api declaration. 前者是概要,描述一共有多少类的api信息,后者描述具体的每一个api定义.可参考Swagger RESTful API Documentation Specification

如何使用

本文基于spring-mvc,前提是api可被正常访问,在些基础上,我们增加swagger的api描述
首先加入引用

<dependency>·
   <groupId>com.mangofactory</groupId>
   <artifactId>swagger-springmvc</artifactId>
   <version>1.0.2</version>
</dependency>
<!--前面分析,还需要支持json序列化,如果项目中没有引入相关jackson或者fastjson的话,也同样需要引入.此处不给具体的依赖--> 

前端处理
https://github.com/swagger-api/swagger-ui 从该处下载zip包。解压后,将dist文件夹下的所有内容copy到Java Web project的webapp下。可以新建一个目录,笔者建的目标为docapi,如图所示
这里写图片描述
修改index中的 url 地址,修改后的地址即为最后访问api信息的地址,要注意docapi里面的文件都可以正常被servlet访问
这里写图片描述
而url后面的 /api-docs ,是可以获取api协议的请求地址, 对于引用的com.mangofactory: swagger-springmvc:1.0.2 包来讲, 地址为 /api-docs,可参考后文的源码分析

此时前端已处理完成.
后端处理
在相应的controller中增加swagger 注解
demo 代码很简单,采用map进行存储用户,实现用户的增删改查操作

@Controller
@Api(value="/person",description="针对用户的插入,删除,查看等操作")
@RequestMapping("/person")
public class TestController {
   
    private ConcurrentMap<Integer,Person> store = Maps.newConcurrentMap();
    private AtomicInteger atomicInteger = new AtomicInteger(0);

    @RequestMapping(value = "/show/{id}",method= RequestMethod.GET)
    @ResponseBody
    @ApiOperation(value="查看",notes="查看用户", response = Person.class)
    public Person getPerson(@PathVariable("id")int id){
        Person person = store.get(id);
        return person == null ? null : person;
    }

    @RequestMapping(value = 
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值