hybris 的 swagger 文档

swagger documentation for hybris

我需要使用 swagger for hybris 生成剩余 api 文档。

我得到了 Kongchan 的示例 pom.xml,但我无法真正修改以匹配 hybris 代码。谁能给我提供 hybris 或任何链接或文档的示例 pom.xml。

查找 Wiki 以生成 Hybris API Swagger 文档


编辑:

您可以关注 spring-xml-swagger example to integrate it with Hybris using XML configuration. Also, this and this 个帖子,会对您有所帮助。

这是我用于 OCC 的 class(在 hybris 6.6 上测试过)

  import org.springframework.context.annotation.Bean;
  import org.springframework.context.annotation.Configuration;
  import org.springframework.context.annotation.Profile;
  import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
  import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;

  import springfox.documentation.builders.ApiInfoBuilder;
  import springfox.documentation.builders.PathSelectors;
  import springfox.documentation.builders.RequestHandlerSelectors;
  import springfox.documentation.service.ApiInfo;
  import springfox.documentation.spi.DocumentationType;
  import springfox.documentation.spring.web.plugins.Docket;
  import springfox.documentation.swagger2.annotations.EnableSwagger2;


  /**
   * @author ajaninmanificat Spring configuration for swagger. Only available if spring profile "swagger" is enabled.
   *
   */
  @Configuration
  @EnableSwagger2
  @Profile("swagger")
  public class SwaggerConfig extends WebMvcConfigurationSupport
  {


    @Override
    public void addResourceHandlers(final ResourceHandlerRegistry registry)
    {
        registry.addResourceHandler("**/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    @Bean
    public Docket api()
    {
        final ApiInfo apiInfo = new ApiInfoBuilder().title("OCC API documentation")
                .description("This document contains the generated API documentation for Omni Commerce Connect v2.")
                .version("Version v2").build();

        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.any()).paths(PathSelectors.any())
                .build().apiInfo(apiInfo).useDefaultResponseMessages(false).enableUrlTemplating(true);
    }


  }

要启用 Swagger,您必须设置 属性 : spring.profiles.active=swagger。这个想法是为了防止在生产中加载 Swagger。

为了避免 BaseSiteMatchingFilter 出现任何问题,我建议创建一个子class IgnorableBaseSiteMatchingFilter

  import java.io.IOException;

  import javax.servlet.FilterChain;
  import javax.servlet.ServletException;
  import javax.servlet.http.HttpServletRequest;
  import javax.servlet.http.HttpServletResponse;


  public class IgnorableBaseSiteMatchingFilter extends BaseSiteMatchingFilter
  {
    private String regexpIgnore;

    @Override
    protected void doFilterInternal(final HttpServletRequest request, final HttpServletResponse response,
            final FilterChain filterChain) throws ServletException, IOException
    {

        final boolean shouldIgnore = (regexpIgnore != null) && matchesUrl(request, regexpIgnore);
        if (shouldIgnore)
        {
            filterChain.doFilter(request, response);
        }
        else
        {
            // Is not ignored, call the real stuff
            super.doFilterInternal(request, response, filterChain);
        }
    }

    public void setRegexpIgnore(final String regexpIgnore)
    {
        this.regexpIgnore = regexpIgnore;
    }
  }

bean 声明如下所示:

<alias alias="baseSiteMatchingFilter" name="myBaseSiteMatchingFilter" />
<bean id="myBaseSiteMatchingFilter" class="mypackage.IgnorableBaseSiteMatchingFilter" parent="defaultBaseSiteMatchingFilter">
    <property name="regexpIgnore" value="(swagger|api-docs|info|login|logout|/health/|/css/|/img/|/js/|/font-awesome/|/bootstrap/|/assets/|/node_modules/)" />
</bean>