Я довольно новичок в REST, и я попытался запустить базовый учебный код Restbed, который выглядит следующим образом:
#include <memory>
#include <cstdlib>
#include <restbed>
using namespace std;
using namespace restbed;
void get_method_handler( const shared_ptr< Session > session )
{
session->close( OK, "Hello, World!", { { "Content-Length", "13" }, { "Connection", "close" } } );
}
int main( const int, const char** )
{
auto resource = make_shared< Resource >( );
resource->set_path( "/resource" );
resource->set_method_handler( "GET", get_method_handler );
//auto ssl_settings = make_shared< SSLSettings >( );
//ssl_settings->set_http_disabled( true );
//ssl_settings->set_private_key( Uri( "file:///tmp/server.key" ) );
//ssl_settings->set_certificate( Uri( "file:///tmp/server.crt" ) );
//ssl_settings->set_temporary_diffie_hellman( Uri( "file:///tmp/dh768.pem" ) );
auto settings = make_shared< Settings >( );
//settings->set_ssl_settings( ssl_settings );
Service service;
service.publish( resource );
service.start( settings );
return EXIT_SUCCESS;
}
Обратите внимание: инициализация SSL закомментирована.Когда я делаю только базовый запрос (http://localhost/resource), все в порядке. С чуть более сложным запросом, содержащим параметр (http://localhost/resource?request=test), он все еще работает как положено. Когда я пытаюсь передать объект JSON (http://localhost/resource?request={}) я получаю сообщение об ошибке «Ваш клиент отправил неверную или недопустимую строку состояния запроса. Это все, что мы знаем». Я могу решить эту проблему, выполнив эту команду из Почтальона, а не из браузера, но даже тогда, когдакак только я изменяю команду на http://localhost/resource?request={"test"=[]}, она снова заканчивается той же ошибкой.
Может кто-нибудь пролить свет на то, на какую проблему я смотрю? У меня работает 64-битная Windows 10, компилируетсякод в Visual Studio 2017.
Заранее спасибо