如何实现RESTAPI服务器? 我是一名具有中级C++编程经验的大学生。我希望尽快为我的应用程序实现一个简单的基于REST的API

如何实现RESTAPI服务器? 我是一名具有中级C++编程经验的大学生。我希望尽快为我的应用程序实现一个简单的基于REST的API,c++,api,rest,C++,Api,Rest,我已经看过了,但是他们各自网站上发布的例子有点让我摸不着头脑。在C++中,是否有更多的面向初学者的教程创建一个REST API服务器? 注意:我知道这个问题在C#中已经被问了好几次了,但是答案已经有一两年的历史了,而且大多不是针对初学者的。我希望一篇新的帖子能给出一些新的答案 嘿,不久前我还不熟悉整个API游戏。我发现用Visual Studio部署ASP.NET Web API是一个很好的开始。VS(我正在使用2013)提供的模板使创建自己的控制器变得非常容易 如果您查阅一些关于HTTP方法的

我已经看过了,但是他们各自网站上发布的例子有点让我摸不着头脑。在C++中,是否有更多的面向初学者的教程创建一个REST API服务器?
注意:我知道这个问题在C#中已经被问了好几次了,但是答案已经有一两年的历史了,而且大多不是针对初学者的。我希望一篇新的帖子能给出一些新的答案

嘿,不久前我还不熟悉整个API游戏。我发现用Visual Studio部署ASP.NET Web API是一个很好的开始。VS(我正在使用2013)提供的模板使创建自己的控制器变得非常容易

如果您查阅一些关于HTTP方法的教程,您就可以真正了解如何根据您的需要对控制器进行建模。它们很好地映射到CRUD操作,我相信您希望执行这些操作


您还应该能够找到C++中的库,允许您调用每个控制器方法,并传递/接收序列化JSON/XML对象。希望这有帮助,祝你好运!:)

我不知道有哪种流行的c/c++rest框架可以轻松实现这一点

一般来说,RESTful框架对于更高级的语言(如java/.NET/javascript/python/等)更受欢迎

在没有框架的情况下实现RESTful接口是可能的,但实际上并不理想。

是一个简单的REST框架,包含epoll、代码生成、命令行工具、扩展和其他功能

使用方便,适合初学者使用;在C++11上编写并使用CMake进行构建。

通过和C++11提供异步客户机/服务器功能。我们有很多文档,对于那些不喜欢阅读头文件的人来说,很快就会有这些文档

#include <memory>
#include <cstdlib>
#include <restbed>

using namespace std;
using namespace restbed;

void post_method_handler( const shared_ptr< Session > session )
{
    const auto request = session->get_request( );

    int content_length = 0;
    request->get_header( "Content-Length", content_length );

    session->fetch( content_length, [ ]( const shared_ptr< Session > session, const Bytes & body )
    {
        fprintf( stdout, "%.*s\n", ( int ) body.size( ), body.data( ) );
        session->close( OK, "Hello, World!", { { "Content-Length", "13" } } );
    } );
}

int main( const int, const char** )
{
    auto resource = make_shared< Resource >( );
    resource->set_path( "/resource" );
    resource->set_method_handler( "POST", post_method_handler );

    auto settings = make_shared< Settings >( );
    settings->set_port( 1984 );
    settings->set_default_header( "Connection", "close" );

    Service service;
    service.publish( resource );
    service.start( settings );

    return EXIT_SUCCESS;
}
#包括
#包括
#包括
使用名称空间std;
使用名称空间restbed;
void post_方法处理程序(const shared_ptrSession)
{
const auto request=session->get_request();
int content_length=0;
请求->获取标题(“内容长度”,内容长度);
会话->获取(内容长度,[](常量共享的会话,常量字节和正文)
{
fprintf(stdout,'%s\n',(int)body.size(),body.data();
会话->关闭(确定,“你好,世界!”,{{“内容长度”,“13”});
} );
}
int main(常量int,常量char**)
{
自动资源=使_共享();
资源->设置路径(“/resource”);
资源->设置方法处理程序(“POST”,POST方法处理程序);
自动设置=使_共享();
设置->设置端口(1984年);
设置->设置默认标题(“连接”、“关闭”);
服务;
服务发布(资源);
服务启动(设置);
返回退出成功;
}
下一个主要特性将允许依赖注入应用程序层

auto settings = make_shared< Settings >( );

Service service;
service.add_application_layer( http_10_instance );
service.add_application_layer( http_11_instance );
service.add_application_layer( http2_instance );
service.add_application_layer( spdy_instance );
service.start( settings );
auto settings=make_shared();
服务;
添加应用层(http\U 10\U实例);
添加应用层(http_11_实例);
添加应用层(http2\u实例);
添加应用层(spdy\U实例);
服务启动(设置);

在我看来,这是一款既好又现代的服装。Hello World只有9行长。

为什么它必须是C++?为什么不使用或?实际上非常简洁,因为它使用C++11 lambdas。我的建议是好好读一读。如果现有的解决方案为您的项目过度设计,那么只需编写您自己的服务器即可。不太难。如果您愿意,您可以使用我的TCPSocket类:)要求我们推荐或查找书籍、工具、软件库、教程或其他非现场资源的问题对于Stack来说是非主题的Overflow@CaptainObvlious对不起,船长。我知道我的问题有点间接,但有时你只需要一个很好的意见来代替事实答案。你应该披露你是ngrest框架的创建者。我尝试了该库,但无法从另一台计算机访问它。不过,它在本地有效。任何指向修复此问题的指针?/Pistache在Windows上似乎不受支持?我也尝试了该库,但无法从其他计算机访问它。不过,它在本地有效。有没有修复此问题的指针?我尝试过安装它,但无法生成。