2015-08-14 18 views
10

Я студент университета с промежуточным уровнем опыта программирования на C++. Я хотел бы как можно быстрее реализовать простой API на основе REST для своего приложения.Как реализовать сервер API REST?

Я посмотрел Casablanca и libWebSockets, но примеры, размещенные на их соответствующих сайтах, немного над моей головой. Есть ли библиотека, в которой есть более ориентированные на новизны учебные пособия по созданию RESTFUL API Server в C++?

Примечание: Я знаю, что этот вопрос задан несколько раз на C#, но ответы более года или двух старых и в основном не нацелены на новичков. Надеюсь, что новый пост даст свежие ответы!

+1

Почему это должно быть C++? Почему бы не использовать [Laravel] (http://laravel.com/) или [node.js] (http://nodejs.org) или [Rails] (http://rubyonrails.org)? – erapert

+1

https://github.com/eidheim/Simple-Web-Server на самом деле довольно аккуратный, потому что он использует C++ 11 lambdas. –

+1

Его не сложно понять ОТДЫХ. Только что прочитал, это будет мой совет. Если существующие решения переработаны для вашего проекта, тогда просто напишите свой собственный сервер. Это не слишком сложно. Вы можете использовать мой класс TCPSocket, если хотите: https: // github.com/samredway/ssocks –

ответ

2

Эй, я не так давно был новичком во всей игре API. Я обнаружил, что развертывание ASP.NET Web API с Visual Studio - отличный способ начать работу. Шаблон, предоставленный VS (я использую 2013), позволяет легко создавать собственные контроллеры.

Если вы ищете пару руководств по методам HTTP, вы можете действительно получить зависание вашего контроллера (ов) в соответствии с вашими потребностями. Они хорошо отображают операции CRUD, которые, я уверен, вы хотите выполнить.

Вы также должны найти библиотеку на C++, которая позволит вам вызвать каждый из ваших методов контроллера и передать/получить сериализованные объекты JSON/XML. Надеюсь, это помогло, удачи! :)

-1

Я не знаю о каких-либо популярных системах c/C++ rest, чтобы легко достичь этого.

обычно, RESTful рамки являются более популярными для высокоуровневых языков, таких как Java/.NET/JavaScript/Python/и т.д. ...

реализует интерфейс RESTful без рамки можно, но это на самом деле не идеально.

3

ngrest представляет собой простую структуру REST с эпохой, когенерацией, инструментом командной строки, расширениями и другим сахаром.

Он прост в использовании и подходит для новичков; написанный на C++ 11 и использующий CMake для сборки.

+12

Вы должны сообщить, что являетесь создателем рамки ngrest. – tambre

5

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); 
0

http://pistache.io/ выглядит хорошо и современно для меня. Мир привет - всего 9 строк.

Смежные вопросы