< from github home page> /// A high-performance REST Toolkit written in C++ ///
我要的就是这个~
更详细的介绍:
Pistache is a C++ REST framework written by Mathieu Stefani at Datacratic. It is written in pure C++11 with no external dependency and provides a low-level HTTP abstraction.
Pistache provides both an HTTP client and server that can be used to create and query complex web and REST APIs.
相关资料
github
homepage / document
安装
clone
git clone git@github.com:oktal/pistache.git
make
cd pistache
mkdir build
cd build
cmake ..
make
install
sudo make install
cmake配置
for find_package
# CMake module I wrote for finding the library Pistache.
set(Pistache_ROOT_DIR
"${Pistache_ROOT_DIR}"
CACHE
PATH
"Where to start looking for this component.")
if(WIN32)
find_path(Pistache_INCLUDE_DIR
NAMES
pistache
PATHS
"C:\\Program Files"
HINTS
${Pistache_ROOT_DIR}
PATH_SUFFIXES
include)
find_library(Pistache_LIBRARY
NAMES
libnet
libnet_static
HINTS
${Pistache_ROOT_DIR}
PATH_SUFFIXES
lib)
else()
find_path(Pistache_INCLUDE_DIR
NAMES
pistache/cookie.h
cookie.h
HINTS
${Pistache_ROOT_DIR}
PATHS
/usr/local/include
/usr/include
PATH_SUFFIXES
include)
find_library(Pistache_LIBRARY
NAMES
libnet.so
libnet_static.sa
HINTS
${Pistache_ROOT_DIR}
PATHS
usr/local
usr/local/lib
PATH_SUFFIXES
lib64
lib)
endif()
mark_as_advanced(Pistache_INCLUDE_DIR
Pistache_LIBRARY)
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(Pistache
DEFAULT_MSG
Pistache_INCLUDE_DIR
Pistache_LIBRARY)
if(Pistache_FOUND)
set(Pistache_INCLUDE_DIRS
"${Pistache_INCLUDE_DIR}")
# Add any dependencies here
set(Pistache_LIBRARIES
"${Pistache_LIBRARY}")
# Add any dependencies here
mark_as_advanced(Pistache_ROOT_DIR)
endif()
把上面的代码保存到FindPistache.cmake文件,并放入project 目录下面
<project_dir>/cmake
然后在CMakeLists.txt文件夹下配置如下:
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_LIST_DIR}/cmake") # 添加cmake_module_path
find_package(Pistache) # 在新的cmake_module_path下寻找pistache
配置target
添加include目录
include_directories("${Pistache_INCLUDE_DIRS}")
链接到target
target_link_libraries(<your_target> ${Pistache_LIBRARIES})
ps:如果发现这里看不太明白,建议对cmake有一定了解的可以取看一下FindPistache.cmake文件的内容。
使用
#include "pistache/net.h"
#include "pistache/http.h"
#include "pistache/router.h"
#include "pistache/endpoint.h"
using namespace Net;
struct HelloHandler : public Http::Handler {
void onRequest(const Http::Request& req, Http::ResponseWriter response) {
response.send(Http::Code::Ok, "Hello, World");
}
};
int main() {
Http::listenAndServe<HelloHandler>("*:9080");
}
测试
# on shell
$ curl http://127.0.0.1:9080
Hello, World # out