简体   繁体   中英

Swagger is not showing any controllers or endpoints

Swagger Api Docs Image

I am working on adding / integrating swagger in my springboot project. I have tried different things but its not got fixed. All that is showing now is white page without any endpoints or controllers and just an empty page with swagger logo.

Swagger URL is : http://localhost:8080/swagger-ui.html

My swagger configurations are given below:

package com.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(scanBasePackages = {"com.app.controller"})
public class StoreApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        try {

            SpringApplication.run(StoreApplication.class, args);

        }catch (Throwable throwable){
            System.out.println(throwable.toString());
            throwable.printStackTrace();
        }
    }
}

Here is my controller code.

My Controller

package com.app.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@CrossOrigin
@RestController
public class CustomersController {

    @RequestMapping(value = "/customers", method = RequestMethod.GET)
    ResponseEntity<?> getAllCustomers(){


        return ResponseEntity.status(HttpStatus.OK).body(null);
    }

    @RequestMapping(value = "/customer", method = RequestMethod.POST)
    ResponseEntity<?> createCustomer(){


        return ResponseEntity.status(HttpStatus.OK).body(null);
    }

}

Here is the main class

Main Class

package com.app;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.support.SpringBootServletInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;
@SpringBootApplication(scanBasePackages = {"com.app.controller"})
public class StoreApplication extends SpringBootServletInitializer {

    public static void main(String[] args) {
        try {

            SpringApplication.run(StoreApplication.class, args);

        }catch (Throwable throwable){
            System.out.println(throwable.toString());
            throwable.printStackTrace();
        }
    }
}

This is my app config file

AppConfig

package com.app.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
import org.springframework.web.servlet.config.annotation.ViewControllerRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

@Configuration
public class AppConfig implements WebMvcConfigurer {

    @Override
    public void addViewControllers(ViewControllerRegistry registry){

      //  registry.addRedirectViewController("/docApi/v2/api-docs","/v2/api-docs");
        registry.addViewController("/welcome").setViewName("Welcome");
    }


}

First, try to add swagger config like this:

@EnableSwagger2
@Configuration
public class SwaggerConfig {


    @Bean
    public Docket productApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.app"))
                .paths(PathSelectors.any())
                .build();
    }

}

then add some annotation in your controller like this:

package com.app.controller;

import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

@CrossOrigin
@RestController
@Api
public class CustomersController {

    @RequestMapping(value = "/customers", method = RequestMethod.GET)
    @ApiOperation(value = "get all", tags = "customer")
    ResponseEntity<?> getAllCustomers(){


        return ResponseEntity.status(HttpStatus.OK).body(null);
    }

    @RequestMapping(value = "/customer", method = RequestMethod.POST)
    @ApiOperation(value = "create", tags = "customer")
    ResponseEntity<?> createCustomer(){


        return ResponseEntity.status(HttpStatus.OK).body(null);
    }

}

hope this would fix your problem. Then try to access the url: http://127.0.0.1:8080/swagger-ui/index.html , pay attention not the url http://localhost:8080/swagger-ui.html .

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM