Khởi tạo dự án web với Cinatra trên Visual Studio

11/06/2020 09:15:53

Visual Studio 2019  Boost phiên bản 1.71

Nguồn mã: https://github.com/qicosmos/cinatra

Lưu ý: Hướng dẫn này dành cho môi trường Visual Studio tiếng Trung.

1, Tạo dự án C++ Windows trống

Trình đơn Tạo mới -> Dự án

Chọn ngôn ngữ C++, loại dự án Trống

2, Tải mã nguồn và tích hợp vào dự án VS

Tải mã nguồn từ github, chỉ giữ lại các thư mục example và include vào thư mục dự án

Nhấp chuột phải vào dự án -> Mở trong trình quản lý tệp

Trong quản lý giải pháp, nhấp vào biểu tượng "Hiển thị tất cả thư mục" để kích hoạt, bạn sẽ thấy các tệp đã sao chép

Các tệp sẽ có màu đỏ, nhấp chuột phải vào tệp và thư mục -> "Bao gồm trong dự án", biểu tượng sẽ chuyển màu bình thường

3, Thêm thư viện Boost, đặt chuẩn C++17, tích hợp Boost vào dự án

Hướng dẫn cài đặt Boost: https://www.cnblogs.com/zx-admin/p/11792567

Nhấp chuột phải dự án -> Thuộc tính -> C/C++ -> Ngôn ngữ -> Chuẩn C++

Chọn ISO C++ 17

Thư mục bao gồm

Đảm bảo đã biên dịch Boost trước

Dự án -> Thuộc tính -> Chọn Thư mục VC++, thêm đường dẫn vào Thư mục bao gồm và Thư viện bao gồm

Thêm đường dẫn D:\boost_1_71_0\ vào Thư mục bao gồm

Thêm đường dẫn D:\boost_1_71_0\stage\lib vào Thư viện bao gồm

4, Giải quyết các lỗi khi chạy

Lỗi 1: This function or variable may be unsafe

Thêm định nghĩa _CRT_SECURE_NO_WARNINGS

Tham khảo: https://jingyan.baidu.com/article/49711c616b8a1ffa441b7cdc.html

Lỗi 2: C4996 'std::codecvt_utf8':

Thêm #pragma warning(disable:4996) vào url_encode_decode.hpp để bỏ qua cảnh báo

5, Hướng dẫn sử dụng

Thử nghiệm với demo trong thư mục example, tệp main.cpp

Sao chép mã nguồn

#include <iostream>
#include "../include/cinatra.hpp"

using namespace cinatra;


int main() {

    http_server server(std::thread::hardware_concurrency());
    bool r = server.listen("0.0.0.0", "8090");
    if (!r) {
        //LOG_INFO << "listen failed";
        return -1;
    }

    //server.on_connection([](auto conn) { return true; });
    server.set_http_handler<GET, POST>("/", [](request& req, response& res) mutable {
        res.set_status_and_content(status_type::ok, "xin chào thế giới");
        //res.set_status_and_content(status_type::ok, std::move(str));
        });

    server.set_http_handler<GET>("/plaintext", [](request& req, response& res) {
        //res.set_status_and_content<status_type::ok, res_content_type::string>("Hello, World!");
        res.set_status_and_content(status_type::ok, "Xin chào, Thế giới!", req_content_type::string);
        });

    server.run();
    return 0;
}

Sau khi chạy thành công, truy cập

127.0.0.1:8090 để kiểm tra

Thẻ: C++ Visual Studio Cinatra Boost Phát triển Web

Đăng vào ngày 10 tháng 6 lúc 00:23