中文版入口
Rápido, eficiente⌛️ e fácil? Estrutura micro web assíncrona c++ baseada em fluxo de trabalho C++ .
C++ Workflow é um mecanismo leve de computação paralela e rede assíncrona C++.
Se você precisa de desempenho e boa produtividade, vai adorar o wfrest .
Para obter mais informações, você pode primeiro ver as discussões:
https://github.com/wfrest/wfrest/discussions
Dicas: Como no g++ 4.9 e na versão anterior, o lambda não pode capturar modelos variados, solicitamos que você atualize sua versão do g++ para 5.0 e superior.
Se você estiver no Ubuntu 20.04, poderá instalá-los pelo comando:
apt-get install build-essential cmake zlib1g-dev libssl-dev libgtest-dev -y
Para mais detalhes, você pode ver aqui: detalhes do requisito
git clone --recursive https://github.com/wfrest/wfrest
cd wfrest
make
sudo make install
Para teste:
make check
Por exemplo :
make example
Se você quiser usar o xmake para construir o wfrest, você pode ver o documento de construção do xmake
Use dockerfile, o subdiretório Dockerfile localizar /docker
do repositório de código-fonte raiz.
docker build -t wfrest ./docker/ubuntu/
Se você estiver usando podman
, também poderá construí-lo. e testado no Ubuntu 20.04
podman build -t wfrest ./docker/ubuntu/
Ou você pode extrair do DockerHub
docker pull wfrest/wfrest
# 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 ;
}