`

simple_server--一个方便c++快速开发接口的http server

阅读更多

simple_server

此组件是为了使用c++方便快速的构建http server,编写基于http协议json格式的接口,和nginx等传统服务器相比,更加重视开发的便捷性,项目参考restbed 实现, 重新实现的原因是restbed只支持g++4.9以上

 

特点

  • 只支持linux
  • 单进程+单线程模型
  • g++3.4 以上编译器都支持
  • 强调简洁实用

依赖

性能

  • qps 3000 (vmware虚拟机上ubuntu系统测试结果)

构建 && 测试

 make && make test && ./bin/http_server_test 
 curl "localhost:3490/hello"

功能列表

  • http 1.0/1.1(keep-alive 支持) GET/POST请求
  • 便捷的开发形式
  • Json格式的数据返回

例子

#include <sstream>
#include <cstdlib>
#include "simple_log.h"
#include "http_server.h"

Response hello(Request &request) {
    Json::Value root;
    root["hello"] = "world";
    return Response(STATUS_OK, root);
}

Response sayhello(Request &request) {
    std::string name = request.get_param("name");
    std::string age = request.get_param("age");

    Json::Value root;
    root["name"] = name;
    root["age"] = atoi(age.c_str());
    return Response(STATUS_OK, root);
}

Response login(Request &request) {
    std::string name = request.get_param("name");
    std::string pwd = request.get_param("pwd");

    LOG_DEBUG("login user which name:%s, pwd:%s", name.c_str(), pwd.c_str());
    Json::Value root;
    root["code"] = 0;
    root["msg"] = "login success!";
    return Response(STATUS_OK, root);
}

int main() {
    HttpServer http_server;

    http_server.add_mapping("/hello", hello);
    http_server.add_mapping("/sayhello", sayhello);
    http_server.add_mapping("/login", login, POST_METHOD);

    http_server.start(3490);
    return 0;
}


编译

g++ -I dependency/simple_log/include/ -I dependency/json-cpp/include/ -I bin/include test/http_server_test.cpp dependency/simple_log/lib/libsimplelog.a dependency/json-cpp/lib/libjson_libmt.a bin/lib/libsimpleserver.a -o bin/http_server_test

运行

liao@ubuntu:~/workspace/simple_server$ curl "localhost:3490/login" -d "name=tom&pwd=3"
{"code":0,"msg":"login success!"}

项目地址:https://github.com/hongliuliao/simple_server

 

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

    CPP_simple_client_server_socket-master_c/C++_simple_

    标题中的"CPP_simple_client_server_socket-master_c/C++_simple_"暗示了这是一个关于C++实现的简单客户端-服务器套接字程序。在这个项目中,开发者可能创建了一个基础的网络通信框架,用于演示如何在C++中使用套接...

    基于socket和opencv在linux中实现摄像头实时数据传送

    g++ simple_server_main.cpp ServerSocket.cpp Socket.cpp -o server -I . -I/usr/local/include -L/usr/local/lib -lopencv_core -lopencv_video -lopencv_highgui -lopencv_imgproc 客户端: g++ simple_client_...

    Simple_FTP_Server.zip_c++ ftp_ftp_ftp wininet_ftp下载

    在这个名为"Simple_FTP_Server.zip"的压缩包中,我们看到的是一个基于C++实现的简单FTP服务器项目。C++ FTP服务器的开发通常涉及到网络编程、多线程以及文件操作等核心技能。 微软提供的WinInet API是一个方便...

    Simple-Web-Server:使用C ++ 11和Boost.Asio实现的非常简单,快速,多线程,独立于平台的HTTP和HTTPS服务器和客户端库。 创建是使REST资源可从C ++应用程序获得的简单方法

    通过以上分析,我们可以看出Simple-Web-Server是一个功能全面、易于使用的网络库,它为C++开发者提供了一种快速构建网络服务和客户端的途径。无论是在开发RESTful API还是进行网络通信测试,Simple-Web-Server都是一...

    Simple_Client_Server_clint_server_

    【标题】"Simple_Client_Server_clint_server_" 指示的是一个简单的客户端-服务器项目,可能是一个基础的网络通信程序,用于演示客户端如何与服务器进行交互。在这个项目中,客户端(clint)和服务器(server)是两...

    Simple-Web-Server笔记1

    Simple-Web-Server是一个轻量级的HTTP服务器,由Eidheim开发并托管在GitLab上。这个项目旨在提供一个简单的HTTP服务器实现,帮助开发者快速理解和学习网络编程的基本原理,特别是与HTTP协议相关的部分。在配置和使用...

    简单易懂C++ WebServer接口开发源代码+详细注释

    本资源包提供的"简单易懂C++ WebServer接口开发源代码+详细注释"旨在帮助开发者学习如何在C++中实现Web服务器接口。下面将详细阐述相关知识点。 1. **Web服务器**:Web服务器是负责接收HTTP请求并返回HTTP响应的...

    gwhttp.rar_Simple server_anykis_win http server

    标签 "simple_server" 指出这是一个轻量级的解决方案,不需要复杂设置,适合初学者和需要快速验证想法的开发者。"anykis" 是可能的开发者或项目名,但具体信息需要进一步研究才能确定。"win_http_server" 表明它专为...

    onvifserver-master_ONVIF_onvifserver_provej9f_Server_

    标题 "onvifserver-master_ONVIF_onvifserver_provej9f_Server_" 暗示了这是一个关于ONVIF服务器实现的项目,可能是源代码仓库的一个版本。描述提到"onvif server功能,能够编译成功",这意味着这个项目提供了一个...

    onvif_server_ONVIF_

    在您提供的资料中,"onvif_server_ONVIF_"很可能是一个ONVIF服务器端应用的项目,包含了一个C++实现的客户端框架。让我们详细探讨一下ONVIF客户端和服务器端的主要功能以及相关知识点: 1. **ONVIF服务端**:ONVIF...

    Simple Client-Server Demo.rar_DEMO_Server_server client_客户服务器

    这个"Simple Client-Server Demo"就是一个展示这种模式的示例。在这个压缩包中,包含了一个简单的客户端和服务器端的代码,以及一个可能是提供下载来源信息的文本文件"www.pudn.com.txt"。 客户端-服务器架构的核心...

    simple_mapi_demo.zip_DEMO_Exchange mapi_exchange_exchange C++_ma

    标题中的"simple_mapi_demo.zip_DEMO_Exchange mapi_exchange_exchange C++_ma"暗示了这是一个关于使用C++编程语言实现Microsoft Exchange邮件API(MAPI)的简单示例项目。Exchange MAPI是Microsoft Exchange Server...

    qpid-cpp-server

    标题中的"qpid-cpp-server"指的是Apache Qpid的C++服务器端实现,这是一个开源的消息传递系统,基于AMQP(Advanced Message Queuing Protocol)协议。它允许应用程序在分布式环境中进行可靠的数据交换,支持多种编程...

    stock_server.rar_C++ gSOAP服务端_gsoap_gsoap 服务

    gSOAP是一个开源工具包,用于生成C和C++代码,以实现基于SOAP(Simple Object Access Protocol)的Web服务。这个"stock_server.rar"文件包含了一个使用gSOAP库编写的C++服务端示例,其主要目标是展示如何通过gSOAP来...

    Simple Web Server C++:一种使REST资源可从C ++应用程序获得的简单方法。-开源

    标题中的“Simple Web Server C++”是一个基于C++实现的轻量级Web服务器,它使得开发者可以方便地从C++应用程序提供RESTful风格的资源。REST(Representational State Transfer)是一种网络应用程序的设计风格和开发...

    client-server-cpp.rar_server cpp

    标题中的"client-server-cpp.rar_server cpp"暗示了我们正在处理一个使用C++语言编写的网络通信项目,其中包含客户端和服务器端的代码。描述中提到的"simple client server application on c++ with using sockets...

    Simple WebSocket Server C++:在C ++中制作WebSocket端点的一种简单方法。-开源

    总之,Simple WebSocket Server C++是一个方便的开源工具,为C++开发者提供了创建WebSocket服务器的能力。它具有良好的性能和易用性,是快速开发实时Web应用的合适选择。通过深入研究项目源代码和示例,你可以更好地...

    simple-TCP-client.rar_C# TCP client_C++ tcp client_TCP client_s

    下面我们将深入探讨TCP协议、C#与C++中的TCP客户端编程以及如何构建一个简单的TCP客户端。 首先,TCP是一种面向连接的、可靠的传输层协议,它通过三次握手建立连接,并确保数据的顺序和完整性。TCP通过确认、重传和...

    A-Simple-Websocket-server:C ++ Webserver。支持http,https,websocket,websocket Secure(WSS)

    一个简单的Websocket服务器 这是C ++ Web服务器实现支持协议 http https 网络套接字 websocket Secure(WSS)。 相依性 的openssl Windows10的 步骤执行 克隆项目 安装openssl(需要https和wss) 在Cmakelists中...

    c++ rtsp server

    "rtsp-simple-server-0.21.0"这个文件很可能是这个C++ RTSP服务器项目的源码包。通过分析和学习这个项目,开发者可以深入理解RTSP服务器的工作原理,掌握如何处理TCP/UDP连接,解析和响应RTSP命令,以及如何编码和...

Global site tag (gtag.js) - Google Analytics