1

这是我的招摇应用程序的界面:

@SwaggerDefinition(
    ...
)
@Api(
    produces = "application/json",
    protocols = "http",
    tags = {"Service"}
)
@Path("/v1/{userId}/Services")
public interface ServiceApiV1 {

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @AsyncTimed
    @ApiOperation(
        value = "Retrieves a service instance",
        tags = "Service"
    )
    @Path("/{serviceId}")
    void fetchService(@Suspended AsyncResponse asyncResponse,
                      @ApiParam @PathParam("userId") UserId userId,
                      @ApiParam @PathParam("serviceId") ServiceId serviceId
    );

    @GET
    @Produces(MediaType.APPLICATION_JSON)
    @AsyncTimed
    @ApiOperation(
        value = "Retrieves a list of services",
        tags = "Service"
    )
    @Path("/")
    void fetchServices(@Suspended AsyncResponse asyncResponse,
                          @ApiParam @PathParam("userId") UserId userId
    );
}

我尝试使用@ApiParam(type = "UserId"),但它仍然使用字符串(我也尝试使用完整路径UserId,例如com.myservice.UserId

如您所见,我有一个特定类型 forUserId和一个 for ServiceId。但是,当我运行swagger-codegen生成的 API 时,将这些参数转换为类型string

是否可以让 Swagger 生成 API 客户端,但保留我在此处定义的 PathParams 类型?

(是的,swagger.json有这些类型的参数是string有道理的,为什么 codegen 然后将这些作为字符串生成。所以我想正确的问题是如何让 Swagger 生成参数是更高级的类型)

更新所以使用完整路径确实会type为我的swagger.json. 但是,生成的 API 仍然使用String:(

4

0 回答 0