鸿蒙应用开发:5分钟集成轻量级 HTTP 服务
近期我在公司开发Linux盒子上的web应用时使用了cpp-httplib库。某天灵光一闪,鸿蒙应用生态下的httpserver库几乎没有,而某些特定场景下,如门禁机,工业平板等确实也需要,这可能就会要求开发应用的朋友得会C++,因为上层arkts不适合干这个事,并且即使干了也是重复造轮子,并且必须得非常懂http协议栈。然后我就萌生了个念头,基于cpp-httplib去封装一层napi供上层arkts使用,至于为什么不用ai去做,至少我实际用过,qoder,trae,包括华为devstudio自己的ai等工具,对鸿蒙生成的代码很多都不准确,所以就手撸一个吧!
先看使用例子:
import * as httpServer from 'harmonyhttpserver';
import { ServerEvent } from 'harmonyhttpserver';
// 1. 创建服务实例
const server = httpServer.createServer();
// 2. 注册事件监听
server.addServerListener((event, reason) => {
console.info(`ServerEvent: ${event}, reason: ${reason}`);
});
// 3. 注册路由
server.addRouterGet("/hello", (req, res) => {
res.setStatus(200);
res.setContent(JSON.stringify({ message: "Hello HarmonyOS!" }), "application/json");
})
.addRouterPost("/echo", (req, res) => {
const body = req.getBody();
const text = body ? new util.TextDecoder().decodeToString(new Uint8Array(body)) : "";
res.setStatus(200);
res.setContent(text, "text/plain");
});
// 4. 启动监听
server.listen("0.0.0.0", 8080);
就这么简单,就能在鸿蒙下搭建http服务了!不过需要注意的是,一旦屏幕关闭,服务会自动断开了,所以实际使用的时候要考虑亮屏自动重连的逻辑。还有一点,不需要关注线程,C++端已经开过了,上层arkts不需要写在taskpool,worker线程中,直接主线程开干就OK!
项目代码中我也写了个带界面的Test,大家有兴趣的话可以下载下来Run一把感觉一下,测试工具可以用apifox,postman等。目前项目我已打包成har发送到openharmony三方库上了,正在审核中~

程序可以跑在模拟器中,但它的网络会有点绕,所以需要用命令配置下,需要做个映射。
hdc fport tcp:21005 tcp:21000
执行完之后 你代码中监听的是21000端口,那么在PC上就使用21005端口
源码地址:AtomGit | GitCode - 全球开发者的开源社区,开源代码托管平台
如果对你有帮助,欢迎 Star、Fork、提 Issue,一起完善鸿蒙生态的 HttpServer 方案
更多推荐




所有评论(0)