5分钟搞定自研HTTP/2服务!wastnet零依赖、免配置,快速搭建不是梦
引入依赖
在项目中引入wastnet-core依赖,版本为1.0.1,零第三方依赖,仅依赖JDK本身。
准备证书
wastnet对PEM与JKS两种证书格式都原生支持。最快的方式是直接用项目测试模块里已准备好的证书:PEM位于`wastnet-test/src/main/resources/cert/`(cert.pem + server.pem),JKS位于`wastnet-test/src/main/resources/server.keystore`(密码`123456`)。
写服务代码
一个最小可运行的HTTP/2服务只需要几行代码,关键点有两个:一是使用`pemSSL(cert, key)`直接加载PEM证书与私钥,免密钥库转换;二是使用`h2()`开启HTTP/2(h2)支持。注意,HTTP/2(h2)依赖ALPN协商,需运行在JDK 9及以上才能生效。在JDK 8下ALPN不可用,wastnet会自动降级为HTTP/1.1继续服务,代码无需改动。如果你使用JKS密钥库,wastnet同样支持,只需改用`sslContext(...)`加载构建好的`SSLContext`即可(可参考`HttpServerTest.java`),h2能力完全一致。
启动并验证
用JDK 9+运行`Http2QuickStart`,框架会在启动后自动打印banner。若不需要banner,可通过`startupBannerEnabled(false)`关闭。可以通过浏览器访问`https://localhost:8443/`(自签名证书会有安全提示,继续访问即可),打开开发者工具Network面板,看到协议列显示为`h2`来验证;也可用命令行`curl --http2 https://localhost:8443/ -k`验证。
加一点路由
实际项目里一般不会只有一个路径。wastnet通过`HttpRouterHandler`作为路由入口,支持精确匹配、前缀匹配与正则匹配。通过示例代码展示了如何进行路由配置并启动服务。
完整示例入口
以上代码对应wastnet测试模块中的真实可运行示例,可直接参考:PEM方式对应的示例为`wastnet-test/src/main/java/io/github/wycst/wastnet/examples/http/MiniNginxHttp2.java`,证书位于`wastnet-test/src/main/resources/cert/cert.pem`与`server.pem`;JKS方式对应的示例为`wastnet-test/src/main/java/io/github/wycst/wastnet/examples/http/HttpServerTest.java`,密钥库位于`wastnet-test/src/main/resources/server.keystore`(密码`123456`)。wastnet基于Apache 2.0协议完全开源、免费使用。