【问题标题】:Swagger UI from Springfox 3.0 not showing the POST methods in UISpringfox 3.0 的 Swagger UI 未在 UI 中显示 POST 方法
【发布时间】:2021-09-15 22:42:48
【问题描述】:

我正在使用带有简单 REST 控制器的 Springfox 3.0。在 Swagger UI 中,只显示 GET 方法,而不显示 POST 方法。

我也在努力在 Swagger UI 中获取我的上下文路径。实际上,上下文路径是在端点之后而不是之前附加的。所以我把所有东西都放在了没有上下文的tomcat根文件夹中。

<servlet-mapping>
        <servlet-name>SwaggerRest</servlet-name>
        <url-pattern>/api/*</url-pattern>
</servlet-mapping>
    @Bean
    public Docket api() { 
         return new Docket(DocumentationType.SWAGGER_2)
                  .host("localhost:8080")
                  .select()                                  
                  .apis(RequestHandlerSelectors.basePackage("test.maventest")).paths(PathSelectors.ant("/**"))              
                        
                  .build();      

-------------
@Component
// make sure it runs after the default plugin springfox.documentation.swagger2.web.WebMvcBasePathAndHostnameTransformationFilter
@Order(Ordered.HIGHEST_PRECEDENCE + 1000)
public class CustomMvcPathHostFilter implements WebMvcSwaggerTransformationFilter {
  
    @Override
    public Swagger transform(SwaggerTransformationContext<HttpServletRequest> context) {
        Swagger swagger = context.getSpecification();
        context.request().ifPresent(servletRequest -> {
            UriComponents uriComponents = HostNameProvider.componentsFrom(servletRequest, swagger.getBasePath());

            swagger.host(uriComponents.getHost() + (uriComponents.getPort() > 0 ? ":" + uriComponents.getPort() : ""));

            // set Swagger base path
            String basePath = StringUtils.isEmpty(uriComponents.getPath()) ? "/" : uriComponents.getPath();
            swagger.basePath(basePath); 
            System.out.println("baseoath "+basePath);
            // rewrite paths to remove the leading base path from each endpoint
            final Map<String, Path> newPaths = swagger.getPaths().entrySet().stream().collect(Collectors.toMap(
                    entry -> entry.getKey().replaceAll("^" + basePath, ""), Map.Entry::getValue));
            swagger.setPaths(newPaths);
        });
        return swagger;
    }
  
//Not showing in swagger ui

@PostMapping("/saveInfo")
    public ResponseEntity <?>  saveinFo(@RequestBody Student student) throws Exception {
        
        System.out.println("Saving  studinfo Response at ==>444444444" );
        return new  ResponseEntity <List<Student>> (studservice.save(student),HttpStatus.OK);
    }

【问题讨论】:

    标签: java swagger-ui openapi springfox


    【解决方案1】:

    尝试使用 springdoc 而不是 springfox。它对我有用。

    org.springdoc:springdoc-openapi-ui:1.5.13
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-15
      相关资源
      最近更新 更多