You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ESP-IDF HTTPS服务器通配符URI匹配配置及编译报错问题问询

报错原因

你出现编译错误的核心原因是赋值对象错误:
uri_match_fn 并非 httpd_ssl_config_t 结构体的直接成员,而是该结构体内嵌的 httpd_config_t 类型子结构体 httpd 的成员,你直接对外层 conf 结构体赋值不存在的成员,自然会触发编译报错。修改官方头文件属于非规范操作,会影响后续ESP-IDF版本升级兼容性,不建议使用。

正确配置方法

按照以下步骤操作即可在不修改官方源码的前提下实现通配符URI匹配:

  • 第一步:给内嵌的httpd子结构体赋值匹配函数
    初始化httpd_ssl_config_t后,修改匹配函数的赋值语句为:
    conf.httpd.uri_match_fn = httpd_uri_match_wildcard;
    
  • 第二步:注册带通配符的URI handler
    注册URI时,匹配规则填写为/command/on/*即可匹配所有该前缀的POST请求,注册示例:
    httpd_uri_t command_on_uri = {
        .uri      = "/command/on/*",
        .method   = HTTP_POST,
        .handler  = your_post_handler,
        .user_ctx = NULL
    };
    httpd_register_uri_handler(server, &command_on_uri);
    
  • 第三步:在请求处理函数中提取数字参数
    在handler函数内获取完整请求URI,裁剪掉前缀/command/on/后转换为整数,再判断是否在1-32的合法范围内即可,示例代码片段:
    esp_err_t your_post_handler(httpd_req_t *req) {
        // 提取URI后缀数字
        const char *prefix = "/command/on/";
        int num = atoi(req->uri + strlen(prefix));
        if (num < 1 || num > 32) {
            httpd_resp_send_err(req, HTTPD_400_BAD_REQUEST, "Invalid parameter");
            return ESP_FAIL;
        }
        // 后续业务逻辑
        return ESP_OK;
    }
    

内容的提问来源于stack exchange,提问作者Dansen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:36:01