Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

CppWorks/wfrest-cpp-web-framework

Repository files navigation

中文版入口

✨ wfrest: C++ Web Framework REST API

Fast🚀, efficient⌛️, and easiest💥 c++ async micro web framework based on C++ Workflow.

C++ Workflow is a light-weighted C++ Parallel Computing and Asynchronous Networking Engine.

If you need performance and good productivity, you will love ✨wfrest✨.

Contents

Dicssussion

For more information, you can first see discussions:

https://github.com/wfrest/wfrest/discussions

Build

Requirement

  • workflow, version v0.9.9 or newer
  • Linux , like ubuntu 16.04 or newer
  • Cmake or Xmake
  • zlib1g-dev
  • libssl-dev
  • libgtest-dev
  • gcc and g++ or llvm + clang, tested with ubuntu 20.04

Tips : Because in g++ 4.9 and the previous version, lambda can't capture variadic templates, we require you to upgrade your g++ version to 5.0 and above.

If you are on ubuntu 20.04, you may install them by command:

apt-get install build-essential cmake zlib1g-dev libssl-dev libgtest-dev -y

For more details, you can see here : requirement details

Cmake

git clone --recursive https://github.com/wfrest/wfrest
cd wfrest
make
sudo make install

For test :

make check

For example :

make example

Xmake

If you want to use xmake to build wfrest, you can see xmake build document

Docker

Use dockerfile, the Dockerfile locate /docker subdirectory of root source code repository.

docker build -t wfrest ./docker/ubuntu/

If you are using podman, you can also build it. and tested under ubuntu 20.04

podman build -t wfrest ./docker/ubuntu/

Or you can Pull from DockerHub

docker pull wfrest/wfrest

Quick start

#include "wfrest/HttpServer.h"
using namespace wfrest;
int main()
{
 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));
 });
 // 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.start(8888) == 0)
 {
 getchar();
 svr.stop();
 } else
 {
 fprintf(stderr, "Cannot start server");
 exit(1);
 }
 return 0;
}

About

C++ Web Framework REST API

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 97.8%
  • CMake 0.8%
  • C 0.8%
  • Lua 0.3%
  • Makefile 0.2%
  • Dockerfile 0.1%

AltStyle によって変換されたページ (->オリジナル) /