大摇大摆不显示我的控制器。试过 Postman,我的端点仍然失败
Swagger not showing my controllers. Tried Postman, my endpoints still failling
希望你们一切都好。我正在尝试使用 Java 和 Springboot 作为我的框架来编写 API 的代码。我使用 sqlServer 作为我的数据库。我做了整个配置以使连接成为可能(启用 tcp/ip 协议,启动 sql 服务器,在我的项目中使用 sql 服务器 jar 文件和 dll 文件,允许远程连接 sql服务器)。当我在我的项目中执行查询并在控制台中显示数据时。但是,当我使用 Swagger 时,没有我的用户控制器和它的方法,它只带来了基本的错误控制器。
我的 pom 文件中有 swagger 依赖项,我的主应用程序中有 @EnableSwagger2。
这是我使用 postman 时发生的情况:
我不知道该怎么办,我无法尝试我的 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 服务器,我遵循 TCP/IP 所说的:
我的 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>
所以...我已经被困了好几天试图弄清楚为什么我不能达到我的终点。我将不胜感激。
你需要在 spring 启动时有 Swagger 的配置文件。
@Configuration
public class SpringFoxConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
用 @Configuration
注释 class 。其他的可以和上面一样。
重新启动服务器并大摇大摆 URL 应该可以解决问题。
我认为因为即使没有招摇也无法访问端点,这是您的包结构的问题。您的控制器包和所有其他组件包(例如服务、存储库)应该是您的主 class(SpringBootApplication.java)所在包下的子包。(如果不是您的主包的子包 class的包,需要在@ComponentScan注解中手动添加。)
希望你们一切都好。我正在尝试使用 Java 和 Springboot 作为我的框架来编写 API 的代码。我使用 sqlServer 作为我的数据库。我做了整个配置以使连接成为可能(启用 tcp/ip 协议,启动 sql 服务器,在我的项目中使用 sql 服务器 jar 文件和 dll 文件,允许远程连接 sql服务器)。当我在我的项目中执行查询并在控制台中显示数据时。但是,当我使用 Swagger 时,没有我的用户控制器和它的方法,它只带来了基本的错误控制器。
我的 pom 文件中有 swagger 依赖项,我的主应用程序中有 @EnableSwagger2。
这是我使用 postman 时发生的情况:
我不知道该怎么办,我无法尝试我的 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 服务器,我遵循 TCP/IP 所说的:
我的 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>
所以...我已经被困了好几天试图弄清楚为什么我不能达到我的终点。我将不胜感激。
你需要在 spring 启动时有 Swagger 的配置文件。
@Configuration
public class SpringFoxConfig {
@Bean
public Docket api() {
return new Docket(DocumentationType.SWAGGER_2)
.select()
.apis(RequestHandlerSelectors.any())
.paths(PathSelectors.any())
.build();
}
}
用 @Configuration
注释 class 。其他的可以和上面一样。
重新启动服务器并大摇大摆 URL 应该可以解决问题。
我认为因为即使没有招摇也无法访问端点,这是您的包结构的问题。您的控制器包和所有其他组件包(例如服务、存储库)应该是您的主 class(SpringBootApplication.java)所在包下的子包。(如果不是您的主包的子包 class的包,需要在@ComponentScan注解中手动添加。)