完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我之前从来没有在esp32上实现web服务器,所以这个问题可能有点低级。
我在review esp-thread-br的web server实现的时候,看到代码里区分了用于gui响应和前端resource的rest api。Code: Select all static httpd_uri_t s_resource_handlers[];static httpd_uri_t s_web_gui_handlers[];httpd_config_t config = HTTPD_DEFAULT_CONFIG();config.max_uri_handlers = (sizeof(s_resource_handlers) + sizeof(s_web_gui_handlers)) / sizeof(httpd_uri_t) + 2;config.max_resp_headers = (sizeof(s_resource_handlers) + sizeof(s_web_gui_handlers)) / sizeof(httpd_uri_t) + 2; 为什么要区分写呢?这种写法是为了单纯的易于阅读还是对性能有特殊的优化? |
|
相关推荐
2个回答
|
|
是这样的,esp-thread-br 的web-gui 在设计的时候,考虑了对ot-br-posix 的REST API的兼容性, 以及本身的web-gui的API应用。所以分了两部分来实现。resource API 主要是为了兼容 ot-br-posix支持的rest API. 而web-gui API 主要是用于web服务器的前后端交互。
|
|
|
|
在实现ESP32上的Web服务器时,区分GUI和Resource的REST API列表的原因可能有以下几点:
1. **模块化**:将GUI和Resource的API分开,有助于保持代码的模块化和组织性。这样,开发者可以更容易地找到和管理特定功能的代码。 2. **性能优化**:通过区分GUI和Resource的API,可以针对不同类型的请求进行优化。例如,GUI请求可能需要更多的交互和动态内容,而Resource请求可能主要是静态文件。通过分开处理,可以提高服务器的性能。 3. **安全性**:将API分开可以提高系统的安全性。例如,可以为不同类型的API设置不同的访问权限和安全策略,以防止未经授权的访问。 4. **易于维护**:将GUI和Resource的API分开,可以降低维护的难度。当需要修改或更新某个部分时,只需关注相关的API,而不需要修改整个系统。 5. **可扩展性**:随着项目的发展,可能需要添加更多的API。将API分开可以更容易地扩展系统,而不影响其他部分的功能。 在您提供的代码片段中,`s_resource_handlers` 和 `s_web_gui_handlers` 分别用于处理Resource和GUI的API请求。`config.max_uri_handlers` 用于设置最大URI处理器的数量,这里将两个数组的长度相加并除以`httpd_uri_t`的大小,以计算所需的处理器数量。`config.max_resp_headers` 用于设置最大响应头的数量,这里使用了`s_resource_handlers`数组的长度乘以`httpd_uri_t`的大小。 总之,区分GUI和Resource的REST API列表有助于提高代码的组织性、性能、安全性和可维护性。这对于在ESP32上实现Web服务器是一个合理的设计选择。 |
|
|
|
只有小组成员才能发言,加入小组>>
1149 浏览 1 评论
582浏览 6评论
480浏览 5评论
有没有办法在不使用混杂模式的情况下实现Wifi驱动程序接收缓冲区访问中断呢?
465浏览 5评论
466浏览 4评论
441浏览 4评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-24 04:12 , Processed in 0.814889 second(s), Total 81, Slave 65 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号