hybris的招摇文件

时间:2018-05-02 06:58:50

标签: rest maven swagger pom.xml hybris

我需要使用swagger为hybris生成rest api文档。

我得到了Kongchan的示例pom.xml,但我无法修改以匹配hybris代码。任何人都可以为hybris或任何链接或文档提供示例pom.xml。

2 个答案:

答案 0 :(得分:2)

使用Swagger

查找用于生成Hybris API文档的Wiki

修改

您可以按照spring-xml-swagger示例使用XML配置将其与Hybris集成。此外,thisthis帖子可以为您提供帮助。

答案 1 :(得分:0)

这是我用于OCC的课程(在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出现任何问题,我建议创建一个子类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>