Skip to content

自定义资源创建接口

优秀的小杨同学 edited this page Jun 21, 2023 · 2 revisions

自定义资源创建接口

资源创建是 Sonolus Web 端的另一个核心功能。接下来,本页面将向您介绍如何自定义资源创建接口。

配置语法

自定义资源创建配置文件Search 类

配置示例

{
    "options": [
        {
            "query": "name",
            "name": "Name",
            "type": "text",
            "placeholder": "Enter level name..."
        }
    ]
}

请求处理

本代码默认处理所有满足 ?name={{name}} 的请求。

以修改关卡创建接口为例,修改 sonolus/levels_create.h 中的 sonolus_levels_create lambda 函数。

具体信息见下面的参考代码:

/**
 * @brief 关卡创建接口函数
 */
auto sonolus_levels_create = [](client_conn conn, http_request request, param argv){
    // 强制使用 POST 方法进行交互
    if (request.method != "POST") {
        putRequest(conn, 405, __api_default_response);
        send(conn, json_encode(msg[405]));
        exitRequest(conn);
    }
    // 检查用户是否已登录
    if (!checkLogin(request)) {
        putRequest(conn, 401, __api_default_response);
        send(conn, json_encode(msg[401]));
        exitRequest(conn);
    }
    
    // 获取 POST 参数信息
    auto $_POST = postParam(request);
    string name = $_POST["name"];

    // 创建一个名为 name 的关卡(此处为伪代码,具体写法参见源代码)
    createLevel({name});

    // 返回响应头以及响应主体
    putRequest(conn, 200, __api_default_response);
    send(conn, json_encode(msg[200]));
    exitRequest(conn);
};

部署

代码编写完毕后,退出代码编辑器,使用 手动编译 中的指令重新编译 Sonolus 服务主程序和插件即可。

Clone this wiki locally