Skip to content

Latest commit

 

History

History
103 lines (73 loc) · 2.17 KB

File metadata and controls

103 lines (73 loc) · 2.17 KB

InAPI

C++

InAPI - C++ библиотека для создания HTTP серверов с FastAPI-подобным синтаксисом

Проект использует cpp-httplib и nlohmann/json

Документация

Компиляция и запуска приложения

make

С SSL

make ssl

Пример сервера на InAPI

#include <InAPI.hpp>

int main() {
    App app;

    app.get("/", []() {
        return text("InAPI 2026 by Qualsu");
    });

    app.get("/users/{id:int}", [](Request request) {
        return json({
            {"id", request.param_int("id")},
            {"name", "Alex"}
        });
    });

    app.post("/users", [](Request request) {
        Json body = request.json();

        return json({
            {"created", true},
            {"name", body.value("name", "")}
        }, 201);
    });

    app.error_handler(404, [](Request) {
        return error(404, "Route not found");
    });

    app.run(8080);
}

То же самое на Crow

#include <crow.h>

int main() {
    crow::SimpleApp app;

    CROW_ROUTE(app, "/")([]() {
        return crow::response("Crow works");
    });

    CROW_ROUTE(app, "/users/<int>")([](int id) {
        crow::json::wvalue body;
        body["id"] = id;
        body["name"] = "Alex";

        crow::response response(body);
        response.set_header("Content-Type", "application/json");
        return response;
    });

    CROW_ROUTE(app, "/users").methods(crow::HTTPMethod::Post)([](const crow::request& request) {
        auto body = crow::json::load(request.body);

        if (!body) {
            return crow::response(400, "{\"error\":\"Bad request\"}");
        }

        crow::json::wvalue result;
        result["created"] = true;
        result["name"] = body["name"].s();

        crow::response response(result);
        response.code = 201;
        response.set_header("Content-Type", "application/json");
        return response;
    });

    app.port(8080).run();
}