我正在使用 JAX-RS、Microprofile 和 Payara 5 构建 REST 服务。我的方法返回类型为 的对象Response
。响应本身包含一个列表MyClass
。实现如下所示:
import org.eclipse.microprofile.openapi.annotations.enums.SchemaType;
import org.eclipse.microprofile.openapi.annotations.media.Content;
import org.eclipse.microprofile.openapi.annotations.media.Schema;
import org.eclipse.microprofile.openapi.annotations.responses.APIResponse;
@GET
@Path("/{a}/{b}/{c}")
@APIResponse(content = @Content(schema = @Schema(type = SchemaType.ARRAY, implementation = MyClass.class)))
public Response getMyClass(@PathParam("a") String a,
@PathParam("b") String b,
@PathParam("c") String c) {
return Response
.ok()
.entity(new ArrayList<>())
.build();
}
生成的 OpenAPI 定义如下所示:
/api/translations/{a}/{b}/{c}:
get:
operationId: getMyClass
parameters:
- name: a
in: path
required: true
style: simple
schema:
type: string
- [...]
responses:
default:
description: Default Response.
content:
'*/*':
schema:
type: array
items: {}
如您所见,响应类型中缺少 MyClass.class 的定义。如何将该类型添加到定义中?注释是@ApiResponse
实现这一目标的正确方法吗?