Swagger Codegen使用

一、Swagger Codegen简介

Swagger Codegen是一个开源的代码生成器,根据Swagger定义的RESTful API可以自动建立服务端和客户端的连接。官方简介看这里:Swagger Codegen

二、Swagger简单使用

新建一个SpringBoot项目

引入依赖

        <dependency>
            <groupId>io.swagger</groupId>
            <artifactId>swagger-annotations</artifactId>
            <version>${swagger.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>${springfox.version}</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>${springfox.version}</version>
       </dependency>

使用Swagger注解:

@Api(tags = {"user. 用户管理"})
public class OneController {

    @GetMapping(value = "/{id}")
    @ApiOperation("根据id查用户")
    @ResponseStatus(code = HttpStatus.OK)
    @ApiImplicitParam(paramType = "path", dataType = "string", name = "id", value = "用户id", required = true)
    public UserDto getUser(@PathVariable String id) {
        UserDto userDto = UserDto.builder()
                .age(10)
                .gender("F")
                .build();
        userDto.setId(id).setName("无名");
        return userDto;
    }
}
@ApiModel(value = "用户Dto")
public class UserDto extends IdName {
    @ApiModelProperty("性别")
    private String gender;

    @ApiModelProperty("年龄")
    private int age;
}

启用项目之后,访问Swagger地址,看看效果:
swagger ui

三、使用Swagger Codegen根据服务生成客户端代码

这里有两种方式,一种是使用swagger-codegen-cli的jar包,在命令行里面生成,如下:

java -jar swagger-codegen-cli-2.3.0.jar generate 
	-i http://localhost:8080/v2/api-docs   (swagger文档地址)
	-l java  
	--library resttemplate 
	-o magellan-configuration-center-client 
	--api-package XXX.client.api
	--invoker-package XXX.client.invoker 
	--model-package XXX.client.model
	--group-id cn.XXX 
	--artifact-id  XXX-api
	--artifact-version 1.0.0-SNAPSHOT

还有一种就是使用maven插件,引入如下插件:

<plugin>
    <groupId>io.swagger</groupId>
    <artifactId>swagger-codegen-maven-plugin</artifactId>
    <version>2.4.9</version>
    <configuration>
        <!--FIXME:如何避免打包后转化为https-->
        <inputSpec>http://localhost:8080/v2/api-docs</inputSpec>
        <language>java</language>
        <library>resttemplate</library>
        <groupId>com.example</groupId>
        <artifactId>service-one-swagger-api-client</artifactId>
        <modelPackage>${groupId}.service-one.client.model</modelPackage>
        <apiPackage>${groupId}.service-one.client.api</apiPackage>
        <invokerPackage>${groupId}.service-one.client.invoker</invokerPackage>
        <output>${project.basedir/api-client}</output>
    </configuration>
    <executions>
        <execution>
            <id>generate-swagger-javaclient</id>
            <phase>generate-sources</phase>
            <goals>
                <goal>generate</goal>
            </goals>
        </execution>
    </executions>
</plugin>			

然后,点击插件:
codegen plugin
可以生成客户端代码,我们这里指定了在api-client目录下,可以看到已经生成了如下代码结构:
在这里插入图片描述
编译之后将其install到本地。

四、client的使用

重建一个项目,引入上面Swagger Codegen生成的jar包:

   		<dependency>
            <groupId>com.example</groupId>
            <artifactId>service-one-swagger-api-client</artifactId>
            <version>1.0.0</version>
        </dependency>

然后调用ServiceOne中Controller提供的getUser方法:

    @Autowired
    User_Api userApi;

    @Override
    public String getName() {
        Dto dto = userApi.getUserUsingGET("userIdFromProduct");
        log.info(dto.toString());
        return dto.getName();
    }

此处的User_Api是Swagger自动生成的类名,根据@Api(tags = {“user. 用户管理”})
中的tag生成的,应该是可以修改的,还需继续研究。

在Test中调用此方法,可以看到可以正常输出方法。这也可以作为一种服务间调用的方式。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,下面是一个通过 Swagger Codegen 生成 Python 代码的示例: 1. 首先,在本地安装 Swagger Codegen 工具。可以通过官方文档中的安装方法进行安装。 2. 创建一个 Swagger 规范文件,比如 `swagger.yaml`,内容如下: ``` swagger: '2.0' info: title: Example API version: '1.0.0' paths: /pets: get: summary: List all pets produces: - application/json responses: '200': description: OK schema: type: array items: type: object properties: id: type: integer format: int64 name: type: string ``` 这个 Swagger 规范文件定义了一个 `/pets` 路径,当使用 GET 方法请求该路径时,会返回一个包含所有宠物信息的 JSON 数组。 3. 使用 Swagger Codegen 生成 Python 代码。在终端中执行以下命令: ``` swagger-codegen generate -i swagger.yaml -l python -o ./petstore ``` 这个命令会使用 `swagger.yaml` 文件中的规范生成 Python 代码,并将代码输出到 `./petstore` 目录中。 4. 在 `./petstore` 目录中,可以看到生成的 Python 代码,包括 `README.md` 文件和 `swagger_client` 目录。 5. 在 Python 代码中,可以使用 `swagger_client` 包中的方法来调用 API。比如,要列出所有宠物信息,可以使用以下代码: ```python from swagger_client.api_client import ApiClient from swagger_client.pet_api import PetApi # 创建 API Client api_client = ApiClient() api_client.host = 'http://petstore.swagger.io/v2' # 创建 PetApi 实例 pet_api = PetApi(api_client) # 调用 list_pets 方法,列出所有宠物信息 pets = pet_api.list_pets() print(pets) ``` 这样,就可以使用 Swagger Codegen 生成的 Python 代码来调用 API 了。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值