1、wfrest 01_basic

1、wfest 简单介绍

        wfrest 主要是用于搭建http 服务器的,http 服务器以前常用的有 轻量级的mongoose、cpp-http 两个库,还是比较方便使用的,都可以扮演者服务器和客户端的角色且都是只有2个文件就可以轻松的搭建起web 服务器,以前公司项目中这2个比较常用到。今天主要向你介绍另外一个web 服务器 wfrest。wfrest: C++ Web Framework REST API (gitee.com)   这是gitee源码链接,欢迎下载使用,从中你可以学习到使用,也可以阅读源码,增强自身水平。你会发现wfest 和cpp-http 在使用结构上基本一致。

 

 二者在使用结构上非常的相似,理解起来比较好理解,这就是一个优秀的接口设计。

2、wfrest 的使用

 01_basic 教你的是如何去搭建一个http 服务器,代码如下,从这里面我们可以知道,搭建一个服务器的步骤,有以下几个注意事项。

1、signal信号

signal(registered signal, signal handler) 函数 主要是起信号屏蔽,我们常见的主要信号如下列表

 2、lamada 表达式

        lamada 表达式是一个比较优秀的写法,本体就是一个函数指针、类似于我们常见的std::bind 和 std::function的用途,在这里面是非常经常用到的。

                [] (){}: [] 表示的是参数列表 () 表示的是传递参数 {} 表示的函数体执行过程。

3、track 追踪

        在下面代码里面有一个 svr.track() 的用法,track 如同日志一般,可以打印函数的执行过程中的信息,在《[提高C++性能的编程技术].左飞.扫描版》pdf 中的第一节就可以看到该介绍

 在本代码中是这样体现的,就是打印出运行的状态。

        

 

#include "workflow/WFFacilities.h"
#include <csignal>
#include "wfrest/HttpServer.h"

using namespace wfrest;

static WFFacilities::WaitGroup wait_group(1);

void sig_handler(int signo)
{
    wait_group.done();
}

int main()
{
    signal(SIGINT, sig_handler);

    HttpServer svr;

    // curl -v http://ip:port/hello
    svr.GET("/hello", [](const HttpReq *req, HttpResp *resp)
    {
        resp->String("world\n");
    });
    // curl -v http://ip:port/data
    svr.GET("/data", [](const HttpReq *req, HttpResp *resp)
    {
        std::string str = "Hello world";
        resp->String(std::move(str));
    });

    svr.ROUTE("/multi", [](const HttpReq *req, HttpResp *resp)
    {
        std::string method(req->get_method());
        resp->String(std::move(method));
    }, {"GET", "POST"});

    // curl -v http://ip:port/post -d 'post hello world'
    svr.POST("/post", [](const HttpReq *req, HttpResp *resp)
    {
        // reference, no copy here
        std::string& body = req->body();
        fprintf(stderr, "post data : %s\n", body.c_str());
    });

    if (svr.track().start(8888) == 0)
    {
        svr.list_routes();
        wait_group.wait();
        svr.stop();
    } else
    {
        fprintf(stderr, "Cannot start server");
        exit(1);
    }
    return 0;
}

好了,关于wfrest的介绍就简单的介绍到这里,后面的会更加精彩,如果有问题,欢迎指出。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值