微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Swagger 没有显示我的控制器尝试过 Postman,我的端点仍然失败

如何解决Swagger 没有显示我的控制器尝试过 Postman,我的端点仍然失败

希望你们都做得很好。我正在尝试使用 Java 和 Springboot 作为我的框架来编写 API。我使用 sqlServer 作为我的数据库。我做了整个配置以使连接成为可能(启用 TCP/IP 协议,启动 sql server,在我的项目中使用 sql server jar 文件和 dll 文件,允许与 sql server 的远程连接)。当我在我的项目中执行查询并在控制台中显示数据时。但是,当我使用 Swagger 时,没有我的 User 控制器和它的方法,它只是带来了基本的错误控制器。

enter image description here

我的 pom 文件中有 swagger 依赖项,而我的主应用程序中有 @EnableSwagger2。

当我使用邮递员时会发生这种情况:

enter image description here

我不知道该怎么办,我无法尝试我的 API。

在这里你可以看到我的用户控制器:


import JDBC.DAO.UsuarioDAO;
import JDBC.DTO.Usuario;
import org.springframework.web.bind.annotation.*;

import java.sql.sqlException;
import java.util.List;

@RestController
@RequestMapping("/")
@CrossOrigin(origins = "*",maxAge = 3600)
public class UsuarioResource {

   //Get usuario por rut
    @RequestMapping(method = RequestMethod.GET,value = "traerUsuario/{rut}")
    public List<Usuario> obtenerUsuarioPorRut (@PathVariable ("rut") String rut) throws sqlException {
        List<Usuario> user = new UsuarioDAO().obtenerUsuarioPorRut(rut);
        return user;
    }

    //Get todos los usuarios
    @RequestMapping(method = RequestMethod.GET,value = "allUsers")
    public List <Usuario> getUsuarios() throws sqlException {
        List <Usuario> usuarios = new UsuarioDAO().obtenerUsuarios();
        return usuarios;
    }


}

你可以看到我的 url 应该是 localhost:8080/whateverendpointgoeshere(当我运行我的应用程序时,它说运行端口 8080)。

这是我用来连接数据库的 ConnectionManager(它可以工作,因为正如我之前所说,当我直接在我的 IDE 中执行它时,它会为我带来数据):


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.sqlException;

public class ConnectionManager {
    private static Connection connection = null;
    private static String connectionString = "jdbc:sqlserver://localhost:1433; databasename=prac; integratedSecurity=true";

    public static Connection obtenerConexion() throws sqlException {
        if (connection == null)
            connection = DriverManager.getConnection(connectionString);
            return connection;
    }
}

在这图片中,您可以看到为什么我使用端口 1433 连接到 sql server,我遵循 TCP/IP 所说的:

enter image description here

我的 pom 文件中的 Swagger 依赖项:

<dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.4.0</version>
        </dependency>

        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.4.0</version>
        </dependency>

所以...我已经被困了好几天试图找出为什么我不能达到我的端点。我将不胜感激。

解决方法

我认为由于即使不招摇也无法访问端点,这是您的包结构的问题。您的控制器包和所有其他组件包(例如服务,存储库)应该是您的主类(SpringBootApplication.java)所在的包下的子包。 (如果不是您的主类包的子包,则需要手动添加它们在@ComponentScan 注释中。)

,

Spring Boot 中需要 Swagger 的配置文件。

@Configuration
public class SpringFoxConfig {                                    
    @Bean
    public Docket api() { 
        return new Docket(DocumentationType.SWAGGER_2)  
          .select()                                  
          .apis(RequestHandlerSelectors.any())              
          .paths(PathSelectors.any())                          
          .build();                                           
    }
}

@Configuration 注释类。你可以把剩下的和上面一样。

重新启动服务器并点击 swagger URL 应该可以修复它。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。