这篇内容是在有道云旧笔记基础上重新整理的 技术实践 笔记。原始记录偏碎片化,这里补充了使用场景、阅读顺序和落地时需要注意的边界,方便以后在项目里快速复用。

适用场景 ​

  • 遇到同类工具、框架或工程问题时,作为快速检索和回忆的入口。
  • 把旧笔记中的关键步骤整理成可以继续补充的博客材料。
  • 适合在真实项目验证后继续追加版本、环境和最终结论。

核心要点 ​

  • 正文以代码或命令片段为主,阅读时建议先确认目标问题,再挑选对应片段验证。
  • 保留了 1 段可直接参考的代码或命令,主要涉及 cpp,复制前需要按当前项目路径、版本和变量名做调整。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
ESP8266WebServer类库ON方法支持通配符"*"
// .platformio\packages\framework-arduinoespressif8266\libraries\ESP8266WebServer\src\Uri.h

#ifndef URI_H
#define URI_H

#include <Arduino.h>
#include <vector>

class Uri {

protected:
const String _uri;

public:
Uri(const char *uri) : _uri(uri) {}
Uri(const String &uri) : _uri(uri) {}
Uri(const __FlashStringHelper *uri) : _uri(String(uri)) {}
virtual ~Uri() {}

virtual Uri* clone() const {
return new Uri(_uri);
};

virtual bool canHandle(const String &requestUri, __attribute__((unused)) std::vector<String> &pathArgs) {
//! 开始
int starPos = _uri.indexOf('*');
if (starPos != -1) {
String prefix = _uri.substring(0, starPos);
String suffix = _uri.substring(starPos + 1);
// 检查请求的 URI 是否以前缀开始并以后缀结束
return requestUri.startsWith(prefix) && requestUri.endsWith(suffix);
}
//! 结束
return _uri == requestUri;
}
};

#endif


实践检查清单 &#8203;

  • 先确认当前工具链版本和运行环境,再决定是否直接复用示例。
  • 把验证过的最终命令、配置或代码补回本文,减少下次重复排查。

复盘小结 &#8203;

这篇笔记更适合作为问题排查或方案落地前的速查材料。后续如果在真实项目中再次遇到同类问题,可以继续把具体版本、报错信息、最终取舍和验证结果补到对应小节里,让它从代码片段逐步沉淀成完整方案。