【问题标题】:Springdocs - generating a vendor extension for a REST endpointSpringdocs - 为 REST 端点生成供应商扩展
【发布时间】: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


    【解决方案1】:
     @ApiOperation(value = "Cancel the email confirmation address for the current user.",
         extensions = {
             @Extension(properties = {@ExtensionProperty(name = "hello", value = "world")}) 
     })
    

    应该这样做。

    【讨论】:

      猜你喜欢
      • 2019-02-18
      • 1970-01-01
      • 2017-05-05
      • 2018-03-29
      • 1970-01-01
      • 1970-01-01
      • 2021-07-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多