困っていること
@QueryParamだったら出力できるのに、@BeanParamだと OpenAPIの出力が想定通りに出ない
実行環境
- Payara Server 5.2022.3
- Java 11
@QueryParamでやってみる
コントローラー
@GET @Produces(MediaType.APPLICATION_JSON) @Operation(summary = "ユーザー情報を検索します") @APIResponse(description = "UserResourse", responseCode = "200") public ResponseEntity<UserResourse> getUsersByQuery( @Parameter(name = "id", example = "1") @QueryParam("id") Integer id, @Parameter(name = "name", example = "name") @QueryParam("name") String name ) { var model = searchUser.findById(UserId.of(id)).orElseThrow(); return ResponseEntity.success(UserResourse.from(model)); }
OpenAPI(yaml)
paths: /api/users: get: summary: ユーザー情報を検索します operationId: getUsersByQuery parameters: - name: id in: query required: false deprecated: false allowEmptyValue: false allowReserved: false schema: type: integer example: "1" - name: name in: query required: false deprecated: false allowEmptyValue: false allowReserved: false schema: type: string example: name responses: "200": description: UserResourse content: application/json: schema: $ref: '#/components/schemas/ResponseEntityUserResourse' deprecated: false
OpenAPI(画像)
思っている通りに出力されている
@BeanParamでやってみる
コントローラー
@GET @Produces(MediaType.APPLICATION_JSON) @Operation(summary = "ユーザー情報を検索します") @APIResponse(description = "UserResourse", responseCode = "200") public ResponseEntity<UserResourse> getUsersByQuery(@BeanParam UserQueryParam userQueryParam) { var model = searchUser.findById(UserId.of(userQueryParam.getId())).orElseThrow(); return ResponseEntity.success(UserResourse.from(model)); }
クエリ―クラス
/** * UserQueryParam. */ @lombok.Data @lombok.NoArgsConstructor @lombok.AllArgsConstructor public class UserQueryParam { @Parameter(name = "id", example = "1") @QueryParam("id") private Integer id; @Parameter(name = "name", example = "name") @QueryParam("name") private String name; }
OpenAPI(yaml)
paths: /api/users: get: summary: ユーザー情報を検索します operationId: getUsersByQuery responses: "200": description: UserResourse content: application/json: schema: $ref: '#/components/schemas/ResponseEntityUserResourse' deprecated: false
OpenAPI(画像)
思っている通りに出力されない(困った)