web-dev-qa-db-ja.com

REST API Server?

私は中級レベルのC++プログラミング経験を持つ大学生です。 できるだけ早く、アプリケーション用にシンプルなRESTベースのAPIを実装したいと思います。

Casablanca および libWebSockets を見てきましたが、それぞれのサイトに投稿された例は頭に少し残っています。 C++でRESTFUL APIサーバーを作成するための、より初心者向けのチュートリアルがあるライブラリはありますか?

注:この質問はC#で何度か尋ねられていることを知っていますが、答えは1年または2年以上前のものであり、ほとんどが初心者向けではありません。新しい投稿が新鮮な答えをもたらすことを願っています!

14
Mason Itkin

ちょっと私もAPIゲーム全体を始めたばかりです。 Visual StudioでASP.NET Web APIを展開することは、開始するのに最適な方法であることがわかりました。 VSが提供するテンプレート(2013年を使用しています)を使用すると、独自のコントローラーを簡単に作成できます。

HTTPメソッドに関するチュートリアルをいくつか参照すると、実際にコントローラーをニーズに合わせて作成することができます。彼らはあなたが実行しようとしていると確信しているCRUD操作にうまくマップします。

また、各コントローラーメソッドを呼び出して、シリアル化されたJSON/XMLオブジェクトの受け渡しを可能にするC++のライブラリを見つけることができるはずです。これがお役に立てば幸いです! :)

2
vivek.s.patel

Restbed は、 [〜#〜] asio [〜#〜] およびC++ 11を介して非同期クライアント/サーバー機能を提供します。多くの examples があり、ヘッダーファイルの読み取りを好まない人のために、まもなくドキュメントが利用可能になります。

#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;
}

次の主要な機能により、アプリケーション層に依存性を注入できます。

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 );
6
Ben Crowhurst

ngrest はシンプルなREST epoll、コード生成、コマンドラインツール、拡張機能、およびその他のシュガーを備えたフレームワークです。

使いやすく、初心者に適しています。 C++ 11で記述され、ビルドにCMakeを使用します。

4
loentar

http://pistache.io/ は見た目が良く、モダンに見えます。ハローワールドの長さはわずか9行です。

3
Djeefther Souza