> 今天我们来学习Swagger庞大体系中的第一个工具:`Swagger Core`,想要学习这个,需要有`swagger-simaples`项目的帮助。`swagger-simaples`提供了很多解释swagger-core作用的例子,以便帮助你理解`Swagger Core`中的项目,跟我一探究竟吧!
## swagger-core
[swagger-core](https://github.com/swagger-api/swagger-core)含有如下子项目:
![](https://box.kancloud.cn/2016-02-23_56cbdb25dc197.jpg)
针对不同的web框架,提供了多种针对性jar包。
## swagger-simaples
[swagger-samples](https://github.com/swagger-api/swagger-samples/tree/master/java)项目是为了针对我们的swagger-core的工具,编写的样例,方便大家理解的。里面还有`java`和`scala`的项目,目前我们只关注`java`的。
![](https://box.kancloud.cn/2016-02-23_56cbdb2603d14.jpg)
## 源码编译
我将这两个项目的源码都clone到本地,然后编译,以确保正确导入到eclipse中
![](https://box.kancloud.cn/2016-02-23_56cbdb2748e23.jpg)
simaples项目源码编译:
![](https://box.kancloud.cn/2016-02-23_56cbdb278a6e9.jpg)
## 实例
我们找一个例子来实际看看`swagger-core`到底是做什么的?
我们来看[java-jaxrs](https://github.com/swagger-api/swagger-samples/tree/master/java/java-jaxrs)项目,按照github上的教程,启动完服务器后,我们在本地访问`http://localhost:8002`,打开后如下:
![](https://box.kancloud.cn/2016-02-23_56cbdb2866b69.jpg),这个时候你就可以看到利用`swagger-core`生成的api文档,具体这个界面里面的东西,我会在下一篇`swaager-ui`的文章来讲解。
那我们来看看他如何生成这个文档的,或者说如何将代码里的接口呈现在我们眼中的呢?
## 工作原理
`java-jaxrs`项目依赖的是`swagger-core`的`swagger-jaxrs`项目,由此可以看出`swagger-core`中的子项目是针对特定框架分开来开发的。而`swagger-jaxrs`项目针对的是[jaxrs](http://baike.baidu.com/link?url=D-yOgrIzkR4lZF50UNNqZT69yva7qRGOEi9V8Ao3eiZ4HqqeXRY8UMlCrToR-YDTthDzKjz3IksvjZ_yDnsNs_)技术开发的`web`项目。那么他是怎么通过你的项目生成`api`可视文档的呢?
方式是注解!`swagger-jaxrs`提供了很多可供调用的注解方式,方便研发在添加代码生成我们需要的接口信息,请看项目中的使用代码:
![](https://box.kancloud.cn/2016-02-23_56cbdb28b24ee.jpg)
这一段代码,生成的api信息如下:
![](https://box.kancloud.cn/2016-02-23_56cbdb29033f0.jpg)
具体的注解代表什么意思,有时间我会一一道来的。
想随时随地了解我的文章,请关注下面的微信公众号,我会不定时推送新文章
![](https://box.kancloud.cn/2016-02-23_56cbdb2957435.jpg)