Quarkus 是一个用于构建高效、轻量级 Java 应用程序的框架,特别适合于云原生和微服务架构。Swagger UI 是一个流行的工具,用于可视化和测试 RESTful API。结合 Quarkus 和 Swagger UI,可以方便地测试安全 API 端点。
首先,在 pom.xml
中添加 Quarkus 和 Swagger 相关的依赖:
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-smallrye-openapi</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-swagger-ui</artifactId>
</dependency>
在 application.properties
中配置 Swagger:
quarkus.swagger-ui.path=/swagger-ui
quarkus.smallrye-openapi.path=/openapi
假设使用 JWT 进行身份验证,可以在 application.properties
中添加以下配置:
quarkus.smallrye-jwt.enabled=true
mp.jwt.verify.publickey.location=publicKey.pem
使用 JAX-RS 注解定义一个安全的 API 端点:
import javax.annotation.security.RolesAllowed;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
@Path("/secure")
public class SecureResource {
@GET
@Path("/data")
@RolesAllowed("user")
public Response getData() {
return Response.ok("Secure data").build();
}
}
启动 Quarkus 应用程序后,可以通过浏览器访问 Swagger UI:
http://localhost:8080/swagger-ui
在 Swagger UI 中,可以看到定义的 API 端点,并且可以输入 JWT 令牌进行身份验证。
原因: 可能是由于端口被占用或配置错误。
解决方法: 检查 application.properties
中的端口配置,并确保没有其他应用占用该端口。
原因: 可能是由于 JWT 令牌无效或配置错误。
解决方法: 确保 JWT 令牌正确,并检查 application.properties
中的 JWT 配置。
以下是一个完整的示例代码,展示了如何在 Quarkus 中配置和使用 Swagger UI 测试安全 API 端点:
import javax.annotation.security.RolesAllowed;
import javax.ws.rs.GET;
import javax.ws.rs.Path;
import javax.ws.rs.core.Response;
@Path("/secure")
public class SecureResource {
@GET
@Path("/data")
@RolesAllowed("user")
public Response getData() {
return Response.ok("Secure data").build();
}
}
# application.properties
quarkus.swagger-ui.path=/swagger-ui
quarkus.smallrye-openapi.path=/openapi
quarkus.smallrye-jwt.enabled=true
mp.jwt.verify.publickey.location=publicKey.pem
通过以上步骤和示例代码,可以在 Quarkus 中成功使用 Swagger UI 测试安全 API 端点。