2011-02-18 373 views
2

要實現一個REST服務,我需要異步C++ HTTP框架,這是基於反應器或前攝模式。我認爲增強asio套接字是一個很好的異步TCP/UDP框架,但它缺乏HTTP支持。任何人都可以推薦一個?有異步C++ HTTP框架嗎?

+0

您可能會感興趣在[這個問題](http://stackoverflow.com/questions/746309/which-is-the-best-c-web-framework) – 2011-02-18 09:08:47

回答

0

ffead-cpp提供支持REST和SOAP的基於網絡的服務支持,嵌入式Web服務器,Apache模塊,ORM和其他許多奇妙的功能。看看主頁..

2

新!回答一個老問題。該庫提供了HTTP和WebSocket的支持,它的界面設計,以消除學習曲線如果你已經知道短耳: https://github.com/vinniefalco/Beast

下面是使用該庫的完整的示例程序:

#include <beast/http.hpp> 
#include <boost/asio.hpp> 
#include <iostream> 
#include <string> 

int main() 
{ 
    // Normal boost::asio setup 
    std::string const host = "boost.org"; 
    boost::asio::io_service ios; 
    boost::asio::ip::tcp::resolver r(ios); 
    boost::asio::ip::tcp::socket sock(ios); 
    boost::asio::connect(sock, 
     r.resolve(boost::asio::ip::tcp::resolver::query{host, "http"})); 

    using namespace beast::http; 

    // Send HTTP request using beast 
    request<empty_body> req({method_t::http_get, "/", 11}); 
    req.headers.replace("Host", host + ":" + std::to_string(sock.remote_endpoint().port())); 
    req.headers.replace("User-Agent", "Beast"); 
    write(sock, req); 

    // Receive and print HTTP response using beast 
    beast::streambuf sb; 
    response<streambuf_body> resp; 
    read(sock, sb, resp); 
    std::cout << resp; 
}