如何基于http方法隐藏相关端点

How to hide relevant endpoint based on http method

    private Predicate<String> aggregationPaths() {
        return or(regex("/aggregationservice.*"),regex("/health"));
     }

此代码片段列出了所有 Spring 引导健康端点到 swagger 文档。我只想显示 Http GET 方法。有人对此有任何想法吗?

您将创建基于 RequestHandler

的谓词
 private Predicate<RequestHandler> onlyGets() {
    return new Predicate<RequestHandler>() {
          @Override
          public boolean apply(RequestHandler input) {
             return input.getRequestMapping()
                    .getMethodsCondition()
                    .getMethods()
                    .contains(RequestMethod.GET);
      }
    };
 }

并在您的 api 选择器中为您的摘要添加谓词

 //....
 new Docket().select().apis(onlyGets())
 //...

目前 input.getRequestMapping() 方法已弃用,它在 RequestHandler 中仅用于合法目的。取而代之的是,您可以使用:

 private Predicate<RequestHandler> onlyGets() {
    return new Predicate<RequestHandler>() {
          @Override
          public boolean apply(RequestHandler input) {
             return input.supportedMethods()
                    .contains(RequestMethod.GET);
      }
    };
 }