这是我的招摇应用程序的界面:
@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
:(