swagger 超简单入门教程使用(自测)

网上swagger 的资料比较多,用到时还是遇到不少坑的,所以自己进行一下整理自己的学习过程

1.安装,集成到springboot
方式一 纯注解式
方式二 引用jar 自配

swagger编写规范

环境:
1,jdk1.8
2,idea
3,spring-boot-starter-parent版本1.5.6.RELEASE
4,springfox-swagger2.7.0 And springfox-swagger-ui 版本2.7.0。如果修改版本号后持续报错,尝试删除.m2目录里面swagger的所有jar包,

1 Swagger环境搭建

新建一个工程,file->new->Porject->Spring Initializr->next-(idea专业版本,社区版可以到git上复制pom文件)

pom.xml文件中添加如下内容(看清楚再复制,此处不是全部内容)

		<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.9.1</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.9.1</version>
        </dependency>

2.Swagger编写sample

在config目录中新建swagger的配置文件swaggerConfig.java
@Configuration
@EnableSwagger2
@ComponentScan(basePackages = {"myj.controller"})
public class SwaggerConfig {

    @Bean
    public Docket createRestApi() {
        List<Parameter> pars = new ArrayList<>();
        return new Docket(DocumentationType.SWAGGER_2)
                .apiInfo(apiInfo())
                .select()
                .apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
                .paths(PathSelectors.any())
                .build()
                .globalOperationParameters(pars)
                .apiInfo(apiInfo());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder()
                .title("exam RESTful Web Service APIs")
                .description("exam")
                .termsOfServiceUrl("http://localhost:8081")
                .version("1.0")
                .build();
    }
}
新建实体类User,基本字段如下

public class User {

    //在swagger-ui.html#页面中如果返回User,ModelModel Schema选项卡可见,包括如入参和出参
    @ApiModelProperty(value = "用户的姓名,比如'李四'")
    private String name;
    @ApiModelProperty(value = "id",required = true)
    private String id;
    @ApiModelProperty(value = "用户的年龄,比如:20")
    private Integer age;

    ....省略set和get方法,
}
在controller包立新建TestController,内容如下

@Api(value = "User-API",description = "这是用户接口详细信息的描述")
@RestController
@RequestMapping("/test")
public class TestController {

    static Map<String, User> users = Collections.synchronizedMap(new HashMap<String, User>());


    @ApiOperation(value = "获取用户列表", notes = "根据url的id来获取用户详细信息,返回List<User>类型用户信息的JSON")
    @RequestMapping(value = {""}, method = RequestMethod.GET,produces = "application/json;charset=UTF-8")
    public List<User> getUserList() {
        List<User> r = new ArrayList<User>(users.values());
        return r;
    }

    ....省略n行代码
}
3 注释图片简析

](https://img-blog.csdnimg.cn/20200612212747421.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQwNzcxMjky,size_16,color_FFFFFF,t_70)

5 注释常用属性解释

@Api 标记一个Controller类做为swagger文档资源,以及该Controller的描述

@Api(value = “User-API”,description = “这是用户接口详细信息的描述”)
属性名称备注
valueurl的路径值
description对api资源的详细描述

@ApiOperation每一个url资源的说明

@ApiOperation(value = “获取用户列表”,notes = “根据url的id来获取用户详细信息,返回List类型的JSON用户信息”)
属性名称备注
value接口操作简介
notes接口描述
@ApiImplicitParam对容器的描述 
@ApiImplicitParam(name = “user”, value = “用户详细实体user”, required = true, dataType = “User”)
属性名称备注
name属性名称
value属性介绍
required是否属性必填
dataType数据类型(int,string, 或者自定义实体类)
paramType参数类型
@ApiModelProperty对model中某字段属性的描述 
@ApiModelProperty(value = “id”,required = true)
属性名称备注
value属性名称
required属性是否必填

6 文档编写规范建议

·model的描述

@ApiModelProperty(value = “用户姓名”,required = true)
private String name;
对字段的描述

value:实体类中字段的描述以及可选的取值。例如sex表示用户性别1:男,0:女 
required:该字段是否必填,不清楚情况下,建议不要填写,或者required=false

controller的描述
@Api(value = “User-API”, description = “用户接口详情”)
对controler的描述

value:如果controller类名为UserController,那么此处该名称叫User-API。 
description:接口详细描述,建议不要超过25个字。

@ApiOperation(value = “获取用户详细信息”, notes = “根据url的id来获取用户详细信息,返回User类型用户信息的实体”)
对该方法的描述

value:接口操作简介,建议不超过15个字。 
notes:1,输出结果代表的意义,2实现的功能。若输出结果为基本类型(类似:int,string)需要指名是什么类型,如果有异常信息,需要指明异常信息的类型。

@ApiImplicitParam(name = “id”, value = “用户ID”, required = true, dataType = “String”)
对参数的描述,如果多个参数需要用@ApiImplicitParams对其进行包裹

name:跟方法名中的参数保持一致。 
value:对参数的简单描述,说明该参数的意义。 
required:该参数是否必填写。 
dataType:入参的类型,可以为类名,也可以为基本类型(String,int,Boolean),加包名,如果都不是则不翻译 
paramType:如果在路径中提取参数用path,比如:在/A/{XXX}路径中得到XXX的值,候选址参数query, body,header。

7 修改从maven下载的jar包
有些jar包,比如swagger-ui包中html的显示,满足不了现有系统的要求,可以根据需求直接修改从maven下载的jar包。(修改内容略过)
1,解压文件

1.unzip springfox-swagger-ui-2.7.0.jar  -d temp

2,进入临时目录temp,编辑文件
3,压缩已经修改的文件

jar cvfm0 springfox-swagger-ui-2.7.0.jar META-INF/MANIFEST.MF

4,重命名源文件

mv springfox-swagger-ui-2.7.0.jar springfox-swagger-ui-2.7.0.jar.old

5,移动修改过后的文件

cp springfox-swagger-ui-2.7.0.jar ../
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Swagger一个用于设计、构建和文档化RESTful Web服务的开源工具集。下面是一个简单Swagger使用教程: 1. 安装Swagger:可以通过npm、pip等包管理工具安装Swagger相关的库和工具。例如,对于Node.js项目,可以使用以下命令安装swagger-jsdoc和swagger-ui-express: ```bash npm install swagger-jsdoc swagger-ui-express ``` 2. 编写Swagger注解:在你的API代码中,使用Swagger注解来描述API的信息、请求和响应参数等。以下是一个示例: ```javascript /** * @swagger * /api/users: * get: * summary: 获取所有用户 * description: 获取所有用户列表 * responses: * 200: * description: 成功获取用户列表 * schema: * type: array * items: * $ref: '#/definitions/User' */ ``` 在这个示例中,我们使用Swagger注解来描述一个GET请求,它可以获取所有用户的列表。 3. 生成Swagger文档:使用Swagger注解编写完API代码后,可以使用相应的工具将这些注解转换为Swagger文档。例如,对于Node.js项目,我们可以使用swagger-jsdoc库生成Swagger文档。在项目的入口文件中添加以下代码: ```javascript const swaggerJSDoc = require('swagger-jsdoc'); const swaggerUi = require('swagger-ui-express'); const options = { definition: { openapi: '3.0.0', info: { title: 'API文档', version: '1.0.0', }, }, apis: ['./path/to/api/controllers/*.js'], // API代码文件的路径 }; const swaggerSpec = swaggerJSDoc(options); app.use('/api-docs', swaggerUi.serve, swaggerUi.setup(swaggerSpec)); ``` 这段代码将会在`/api-docs`路径下提供Swagger文档。 4. 查看Swagger文档:运行项目并访问`/api-docs`路径,你将会看到生成的Swagger文档。Swagger提供了一个交互式的UI界面,可以方便地查看API的信息、请求和响应参数等。 这只是一个简单Swagger使用教程,你可以根据自己的项目需求进一步深入学习和使用Swagger

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值