Movatterモバイル変換


[0]ホーム

URL:


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

A Fast and Easy to use microframework for the web.

License

NotificationsYou must be signed in to change notification settings

CrowCpp/Crow

Repository files navigation

A Fast and Easy to use microframework for the web.

Build StatusCoverage StatusDocumentationGitterOpen Collective

Description

Crow is a C++ framework for creating HTTP or Websocket web services. It uses routing similar to Python's Flask which makes it easy to use. It is also extremely fast, beating multiple existing C++ frameworks as well as non-C++ frameworks.

Features

  • Easy Routing (similar to Flask).
  • Type-safe handlers.
  • Blazingly fast (seethis benchmark andthis benchmark).
  • Built in JSON support.
  • Mustache based templating library (crow::mustache).
  • Header only library (single header file available).
  • Middleware support for extensions.
  • HTTP/1.1 and Websocket support.
  • Multi-part request and response support.
  • Uses modern C++ (11/14)

Still in development

Documentation

Availablehere.

Warning

If you are using Crow v0.3, then you have to put#define CROW_MAIN at the top of one and only one source file.

Examples

Hello World

#include"crow.h"intmain(){    crow::SimpleApp app;CROW_ROUTE(app,"/")([](){return"Hello world";    });    app.port(18080).multithreaded().run();}

JSON Response

CROW_ROUTE(app,"/json")([]{    crow::json::wvaluex({{"message","Hello, World!"}});    x["message2"] ="Hello, World.. Again!";return x;});

Arguments

CROW_ROUTE(app,"/hello/<int>")([](int count){if (count >100)returncrow::response(400);    std::ostringstream os;    os << count <<" bottles of beer!";returncrow::response(os.str());});

Handler arguments type check at compile time

// Compile error with message "Handler type is mismatched with URL parameters"CROW_ROUTE(app,"/another/<int>")([](int a,int b){returncrow::response(500);});

Handling JSON Requests

CROW_ROUTE(app,"/add_json").methods("POST"_method)([](const crow::request& req){auto x =crow::json::load(req.body);if (!x)returncrow::response(crow::status::BAD_REQUEST);// same as crow::response(400)int sum = x["a"].i()+x["b"].i();    std::ostringstream os;    os << sum;return crow::response{os.str()};});

More examples can be foundhere.

Setting Up / Building

Availablehere.

Disclaimer

CrowCpp/Crow is a project based on ipkn/crow. Neither CrowCpp, it's members, or this project have been associated with, or endorsed or supported by ipkn (Jaeseung Ha) in any way. We do use ipkn/crow's source code under the BSD-3 clause license and sometimes refer to the public comments available on the github repository. But we do not in any way claim to be associated with or in contact with ipkn (Jaeseung Ha) regarding CrowCpp or CrowCpp/Crow

Attributions

Crow has incorporated the following libraries into its source.

http-parser (used for converting http strings to crow::request objects)https://github.com/nodejs/http-parserhttp_parser.c is based on src/http/ngx_http_parse.c from NGINX copyrightIgor Sysoev.Additional changes are licensed under the same terms as NGINX andcopyright Joyent, Inc. and other Node contributors. All rights reserved.Permission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), todeal in the Software without restriction, including without limitation therights to use, copy, modify, merge, publish, distribute, sublicense, and/orsell copies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THEAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHERLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISINGFROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGSIN THE SOFTWARE.---------------------------------------------------------------------------qs_parse (used for reading query string parameters)https://github.com/bartgrantham/qs_parseCopyright (c) 2010 Bart GranthamPermission is hereby granted, free of charge, to any person obtaining a copyof this software and associated documentation files (the "Software"), to dealin the Software without restriction, including without limitation the rightsto use, copy, modify, merge, publish, distribute, sublicense, and/or sellcopies of the Software, and to permit persons to whom the Software isfurnished to do so, subject to the following conditions:The above copyright notice and this permission notice shall be included inall copies or substantial portions of the Software.---------------------------------------------------------------------------TinySHA1 (used during the websocket handshake, not for security)https://github.com/mohaps/TinySHA1TinySHA1 - a header only implementation of the SHA1 algorithm. Based on theimplementation in boost::uuid::detailsCopyright (c) 2012-22 SAURAV MOHAPATRA mohaps@gmail.comPermission to use, copy, modify, and distribute this software for any purposewith or without fee is hereby granted, provided that the above copyrightnotice and this permission notice appear in all copies.THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITHREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITYAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROMLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OROTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE ORPERFORMANCE OF THIS SOFTWARE.---------------------------------------------------------------------------Catch2 (used only in unit tests, not part of the actual framework)https://github.com/catchorg/Catch2Boost Software License - Version 1.0 - August 17th, 2003Permission is hereby granted, free of charge, to any person or organizationobtaining a copy of the software and accompanying documentation covered bythis license (the "Software") to use, reproduce, display, distribute,execute, and transmit the Software, and to prepare derivative works of theSoftware, and to permit third-parties to whom the Software is furnished todo so, all subject to the following:The copyright notices in the Software and this entire statement, includingthe above license grant, this restriction and the following disclaimer,must be included in all copies of the Software, in whole or in part, andall derivative works of the Software, unless such copies or derivativeworks are solely in the form of machine-executable object code generated bya source language processor.THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS ORIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENTSHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLEFOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHERDEALINGS IN THE SOFTWARE.

Star History

Star History Chart

About

A Fast and Easy to use microframework for the web.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

  •  

Contributors154

Languages


[8]ページ先頭

©2009-2025 Movatter.jp