備忘録

備忘録

cpprestsdkを利用してWebサーバを構築する方法

Ⅰ. はじめに

タイトルの通り「cpprestsdkを利用してWebサーバを構築する方法」です。

Ⅱ. サンプルプログラム

#include <Windows.h>
#include <iostream>
#include <format>

#include <cpprest/http_listener.h>

int main()
{
  SetConsoleOutputCP(CP_UTF8);

  auto address = utility::conversions::to_string_t("http://127.0.0.1:80");
  web::http::experimental::listener::http_listener listener(address);

  listener.support(web::http::methods::GET, [](web::http::http_request request)
    {
      auto parameters = web::uri::split_query(request.request_uri().query());
      auto param1 = utility::conversions::utf16_to_utf8(parameters.at(L"param1"));
      auto param2 = utility::conversions::utf16_to_utf8(parameters.at(L"param2"));

      std::cout << param1 << std::endl;
      std::cout << param2 << std::endl;

      request.reply(web::http::status_codes::OK, "OK");
    });

  listener.support(web::http::methods::POST, [](web::http::http_request request)
    {
      auto json = request.extract_json().get();
      auto name = utility::conversions::utf16_to_utf8(json[L"name"].as_string());

      std::cout << name << std::endl;

      auto str = std::format("Hello {0}", name);
      request.reply(web::http::status_codes::OK, str);
    });

  listener.open().wait();

  getchar();
  listener.close();
  return 0;
}

実行結果

GET
POST