【发布时间】:2020-10-23 11:09:15
【问题描述】:
我有以下 REST 处理程序:
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import io.swagger.v3.oas.annotations.extensions.Extension;
import io.swagger.v3.oas.annotations.extensions.ExtensionProperty;
import javax.annotation.Resource;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.http.HttpEntity;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.context.request.async.DeferredResult;
import springfox.documentation.annotations.ApiIgnore;
@Api(value = ConfirmEmailRestHandler_1_0.REQUEST_PATH)
@RestController
@RequestMapping(ConfirmEmailRestHandler_1_0.REQUEST_PATH)
public class ConfirmEmailRestHandler_1_0 {
public static final String REQUEST_PATH = "/";
@Resource IConfirmEmailClient client;
private static final Logger log = LoggerFactory.getLogger(ConfirmEmailRestHandler_1_0.class);
@RequestMapping(
method = RequestMethod.POST,
path = "/cancel",
produces = {MessageTypes.CONFIRM_EMAIL_1_0_JSON})
@ApiOperation(value = "Cancel the email confirmation address for the current user.")
@Extension(properties = {@ExtensionProperty(name = "hello", value = "world")})
public DeferredResult<ResponseEntity<ConfirmEmailResponse>> cancel_1_0(
@RequestBody CancelConfirmEmailRequest body, @ApiIgnore final HttpEntity<String> request) {
return process(
"cancel_1_0",
"",
o -> o,
request,
ignoredInput -> client.cancel_1_0(body).toCompletableFuture());
}
}
我正在使用 springdoc-openapi 为其生成相应的 OpenAPI 规范,但是,我希望从 @Extension(properties = {@ExtensionProperty(name = "hello", value = "world")}) 获得的供应商扩展没有显示在其中:
...
{
"/cancel": {
"post": {
"tags": [
"confirm-email-rest-handler-_1_0"
],
"operationId": "cancel_1_0",
"requestBody": {
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"body": {
"$ref": "#/components/schemas/CancelConfirmEmailRequest"
},
"request": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "default response",
"content": {
"application/vnd.com.volvo.tisp.cc-confirm-email.v1.0+json": {
"schema": {
"$ref": "#/components/schemas/DeferredResultResponseEntityConfirmEmailResponse"
}
}
}
}
}
}
}
...
我希望包含 "x-hello": "world" 字段。我如何做到这一点?
【问题讨论】:
标签: java spring spring-boot swagger openapi