1 搭建Crow 开发环境

Crow是一个基于Asio或者Boost.Asio的创建Http服务或者Websocket服务的C++框架。

1.1 官网教程

Crow的官方文档中比较简单的介绍了如何在Linux、MacOS、Windows系统上编译、安装Crow库。

从官方文档上看,编译和使用Crow需要依赖以下环境:

  • 需要支持C++11的编译器
  • 需要Asio,版本至少为1.10.9或者更新的版本
  • 如果需要Http Compression,则需要ZLib
  • 如果需要Https,则需要OpenSSL

Crow非常易于使用,只需要包含头文件,其提供了两个版本,这两个版本的区别是:非单个头文件版本可以只依赖Asio,这也是一个头文件库;而单个头文件版本依赖Boost.Asio,需要依赖Boost。

这两个版本区别导致我们在配置Crow开发环境的时候有区别,如果我们使用单个头文件版本,则需要依赖Boost.Asio进而依赖Boost,而如果我们使用非单个头文件版本则只是需要使用Asio,而Asio也是一个头文件库,所以按我的习惯是使用非单个头文件版本,不会依赖非常重的Boost。下面的环境配置教程也是以Crow+Asio这种搭配为例子。

1.2 Crow和Asio

1.2.1 下载Crow

我们可以先从Crow的github仓库拉取仓库或者从Release页面下载发布版本。其中Release页的crow_all.h就是只有单个头文件的版本,依赖Boost.Asio,而我们要使用的是在源码根目录下的include子目录,其中包括了corw.h以及crow文件夹就是我们要使用的。

1.2.2 下载Asio

Asio的官网是:http://think-async.com/Asio/,其发布版本放在了sourceforge:https://sourceforge.net/projects/asio/files/asio/,找版本大于1.10.9的下载即可。

下载之后也是只有一个include目录,目录下包含了asio.hppasio文件夹。

1.3 配置开发环境

如果我们之后想基于Crow开发Http和Websocket服务器,不管是使用CMake、Visual Studio等方式管理项目,那么只需要将1.2节中下载的Crow和Asio添加到项目的包含目录中即可,如果要使用Http Compression或者Https则自行在项目中配置和链接Zlib和OpenSSL。

比如说如果我们在Windows项目上使用Visual Studio进行Crow项目的开发,那么只需要右键项目属性 - C/C++ - 常规 - 附加包含目录中添加Crow和Asio的路径即可,如下图所示。

C++ – Web服务器框架Crow开发环境配置教程-StubbornHuang Blog

1.4 测试代码

项目开发环境配置完成之后,我们可以使用以下代码进行测试

#include "crow.h"

int main()
{
    crow::SimpleApp app; //define your crow application

    //define your endpoint at the root directory
    CROW_ROUTE(app, "/")([](){
        return "Hello world";
    });

    //set the port, set the app to run on multiple threads, and run the app
    app.port(18080).multithreaded().run();
}

编译运行,然后在浏览器中打开http://localhost:18080 即可在页面看到Hello World。