cpp-httplib: 快速構建C++ Web服務

cpp-httplib 是一個C++語言編寫的Web Server庫,它可以幫助您在短時間內構建一個高效的Web服務應用程序。cpp-httplib使用簡單,支持多種HTTP請求類型,並包含錯誤處理程序。本篇文章將從以下幾個方面詳細闡述cpp-httplib的使用方法和應用場景:

一、基本使用

1、導入cpp-httplib:

#include <httplib.h>

2、創建一個 HTTP Server:

httplib::Server svr;

3、在 HTTP Server 上註冊 GET 方法:

svr.Get("/", [](const httplib::Request &req, httplib::Response &res) {
  res.set_content("Hello World!", "text/plain");
});

4、啟動 HTTP Server:

svr.listen("localhost", 1234);

上面的代碼將在本地啟動一個Server並監聽端口號為1234,然後它將註冊URI “/” 的GET方法,並返回Hello World!。

二、HTTP 請求和響應

1、根據 URI 動態獲取請求的參數:

svr.Post("/submit", [](const httplib::Request &req, httplib::Response &res) {
  auto name = req.get_param_value("name");
  auto age = req.get_param_value("age");
  res.set_content("Name: " + name + ", Age: " + age, "text/plain");
});

2、通過 Query String 或 JSON 主體獲取請求的數據:

svr.Post("/submit", [](const httplib::Request &req, httplib::Response &res) {
  auto qs_name = req.get_query_value("name");
  auto qs_age = req.get_query_value("age");

  nlohmann::json json;
  json["name"] = req_json.value("name", "No Name");
  json["age"] = req_json.value("age", 0);
  auto req_body = json.dump();

  res.set_content("Name: " + qs_name + ", Age: " + qs_age + ", Request Body: " + req_body, "text/plain");
});

3、設置響應頭:

res.set_header("Server", "MyServer/1.0");

4、設置響應主體:

res.set_content("Hello World!", "text/plain");

三、高級功能

1、文件服務:

httplib::Server svr;
svr.set_file_extension_and_mimetype_mapping({
    {"htm", "text/html"},
    {"html", "text/html"},
    {"css", "text/css"},
    {"gif", "image/gif"},
    {"jpg", "image/jpeg"},
    {"png", "image/png"},
    {"js", "application/javascript"}
});
svr.set_mount_point("/", "./public_html");
svr.listen("localhost", 1234);

2、驗證器:

struct ValidUser {
  std::string user_name, password;

  bool operator==(const ValidUser& rhs) const {
    return user_name == rhs.user_name && password == rhs.password;
  }
};

class Authenticator : public httplib::Authentication {
public:
  Authenticator() {}

  bool operator()(const httplib::Request& req) override {
    auto auth_headers = req.get_header_value("Authorization");
    if (!auth_headers.empty()) {
      auto creds = split_basic_auth_header(auth_headers);
      for (const auto& user : m_validUsers) {
        if (creds.first == user.user_name && creds.second == user.password) {
          return true;
        }
      }
    }

    return false;
  }

  void add_user(const std::string& user_name, const std::string& password) {
    m_validUsers.push_back(ValidUser{user_name, password});
  }

private:
  std::vector<ValidUser> m_validUsers;
};

httplib::Server svr;

Authenticator auth;
auth.add_user("admin", "123456");
svr.set_authenticator("localhost", auth);

svr.get("/", [](const httplib::Request& /*req*/, httplib::Response& res) {
     res.set_content("OK", "text/plain");
});

svr.listen("localhost", 1234);

四、應用場景

1、RESTful API:

cpp-httplib支持GET、POST、PUT、DELETE 以及其他HTTP請求類型,因此可輕鬆創建RESTful API。

2、輕量級Web服務:

cpp-httplib是一個非常輕巧的Web服務器,不需要安裝其他依賴項,非常適合快速構建Web服務應用程序。

3、文件服務:

cpp-httplib可以用於提供靜態文件服務,使客戶端能夠獲取Web服務器上的文件資源。

總之,cpp-httplib 是一個更現代的、易於使用的 Web 服務器框架,它旨在幫助開發人員輕鬆構建高效的 Web 服務應用程序。如果你正在尋找一個靈活的、根據需要進行擴展的 Web 服務器框架,那麼 cpp-httplib 可能是你需要的工具。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/246506.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-12 13:15
下一篇 2024-12-12 13:15

相關推薦

  • Ojlat:一款快速開發Web應用程序的框架

    Ojlat是一款用於快速開發Web應用程序的框架。它的主要特點是高效、易用、可擴展且功能齊全。通過Ojlat,開發人員可以輕鬆地構建出高質量的Web應用程序。本文將從多個方面對Oj…

    編程 2025-04-29
  • Python Web開發第三方庫

    本文將介紹Python Web開發中的第三方庫,包括但不限於Flask、Django、Bottle等,並討論它們的優缺點和應用場景。 一、Flask Flask是一款輕量級的Web…

    編程 2025-04-29
  • Web程序和桌面程序的區別

    Web程序和桌面程序都是進行軟件開發的方式,但是它們之間存在很大的區別。本文將從多角度進行闡述。 一、運行方式 Web程序運行於互聯網上,用戶可以通過使用瀏覽器來訪問它。而桌面程序…

    編程 2025-04-29
  • 二階快速求逆矩陣

    快速求逆矩陣是數學中的一個重要問題,特別是對於線性代數中的矩陣求逆運算,如果使用普通的求逆矩陣方法,時間複雜度為O(n^3),計算量非常大。因此,在實際應用中需要使用更高效的算法。…

    編程 2025-04-28
  • Python操作Web頁面

    本文將從多個方面詳細介紹Python操作Web頁面的技巧、方法和注意事項。 一、安裝必要的庫 在Python中操作Web頁面,需要用到一些第三方庫。 pip install req…

    編程 2025-04-28
  • 如何使用WebAuth保護Web應用

    WebAuth是用於Web應用程序的一種身份驗證技術,可以提高應用程序的安全性,防止未經授權的用戶訪問應用程序。本文將介紹如何使用WebAuth來保護您的Web應用程序。 一、什麼…

    編程 2025-04-28
  • 快速排序圖解

    快速排序是一種基於分治思想的排序算法,效率非常高。它通過在序列中尋找一個主元,將小於主元的元素放在左邊,大於主元的元素放在右邊,然後在左右子序列中分別遞歸地應用快速排序。下面將從算…

    編程 2025-04-28
  • Python編寫Web程序指南

    本文將從多個方面詳細闡述使用Python編寫Web程序,並提供具有可行性的解決方法。 一、Web框架的選擇 Web框架對Web程序的開發效率和可維護性有着重要的影響,Python中…

    編程 2025-04-28
  • Python性能分析: 如何快速提升Python應用程序性能

    Python是一個簡潔高效的編程語言。在大多數情況下,Python的簡潔和生產力為開發人員帶來了很大便利。然而,針對應用程序的性能問題一直是Python開發人員需要面對的一個難題。…

    編程 2025-04-27
  • 有哪些Python軟件可以用來構建Web應用

    Python語言是一種膠水語言,可以和多種語言以及系統進行交互,廣泛應用於多個領域。在Web應用開發領域,Python是一個功能強大的語言,在Python社區中有許多優秀的Web應…

    編程 2025-04-27

發表回復

登錄後才能評論