1.需求概述
最近和公司其他项目平台对接,有这样一个需求:提供一个HTTP Server,从URL中解析出文件ID等信息,然后调用我方项目开发的接口,从我方平台中下载这个文件,根据URL中的参数再对其做一些简单处理,然后再将文件以HTTP方式发送给对方平台。由于只用到一个查询接口,get即可满足,因此不用rest库。且受限于软硬件条件,不用java,需使用c/c++开发。
2.总体思路:
使用apache2搭建http server,然后开发一个模块处理http请求,在该模块中解析URL、调用我方平台接口下载文件、对文件做二次处理、封装http响应报文,将请求返回给客户端。
3.apache2 模块开发
关于apache2的安装,这里不做赘述,请自行百度。
apache2 模块开发步骤,网上资料也比较多,请主要参考 《
将 Apache httpd 作为应用开发平台》。
简单的说,就是通过apache2提供的apxs工具,生成一套框架代码、Makefile以及部署脚本,然后基于该框架代码进一步添加自己的业务逻辑:
1) apxs -g -n mymodule 生成模块代码框架(
mymodule 是自己的模块名): apache2会生成名为 mod_mymodule的目录,其中包含 mod_mymodule.c以及Makefile等文件;
2) 修改 mod_mymodule.c ,添加自己的业务逻辑(稍后再详细介绍)
3) apxs -i -c -a mod_mymodule.c 会将so文件释放到apache2的lib目录,例如:
/usr/lib64/httpd/modules