ESP32 httpd服务HTTP_DELETE请求报URI未被服务端处理问题咨询
问题根因
乐鑫ESP-IDF的httpd组件原生支持HTTP_DELETE方法,该报错是HTTP服务初始化配置未开启DELETE方法权限导致的。
httpd组件默认生成的配置(通过HTTPD_DEFAULT_CONFIG()宏获取)中,method_mask字段默认仅启用HTTP_GET、HTTP_POST、HTTP_PUT三类方法,未包含HTTP_DELETE。这种情况下即使你正确注册了DELETE方法的路由处理函数,服务端也不会识别处理DELETE请求,直接返回方法不支持的错误。
修复方案
初始化HTTP服务时,在默认配置基础上追加DELETE方法的支持即可,参考代码如下:
// 初始化默认配置 httpd_config_t httpd_config = HTTPD_DEFAULT_CONFIG(); // 追加DELETE方法支持 httpd_config.method_mask |= HTTP_DELETE; httpd_handle_t server = NULL; // 启动httpd服务 if (httpd_start(&server, &httpd_config) == ESP_OK) { // 注册所有路由 httpd_register_uri_handler(server, &get_uri); httpd_register_uri_handler(server, &put_uri); httpd_register_uri_handler(server, &post_uri); httpd_register_uri_handler(server, &delete_uri); }
其他注意点
你贴出的代码存在函数名与注册handler不匹配的笔误:
- GET处理函数定义名为
getTest,路由注册时填的是testGet - PUT处理函数定义名为
putTest,路由注册时填的是testPut - POST处理函数定义名为
postTest,路由注册时填的是testPost
你提到GET/PUT/POST请求可正常响应,说明这是贴代码时的手误,若实际代码也存在该问题需要同步修正,否则会触发函数找不到的运行时错误。
内容的提问来源于stack exchange,提问作者Pedrojdi
相关产品推荐
相关产品推荐

