当前位置:   article > 正文

ESP32开发实例(七),WebServer使用_esp32 web

esp32 web

目录

 

一、什么是WebServer

二、基本语法

三、路径参数的简单认识

四、用户认证

五、总结

 

 


一、什么是WebServer

Web Server中文名称叫网页服务器或web服务器。WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务。

太过官方的解释,大家可能看不懂。通俗点讲,这个功能其实可以简单的理解为是网页服务器。它的主要作用就是用户访问链接的时候执行相应的动作。就比如你访问了特定的网页,他可以给你一个特定的回执或者是提示或指令。对于开发来说,处理的主要就是注册链接,并编写用户访问该链接时需要执行的操作或者是提示。

二、基本语法


首先我们看一下它的基本使用语法和功能关键词。​

  • 引入相应库#include <WebServer.h>
  • 声明WebServer对象并设置端口号,一般WebServer端口号使用80
  • 使用on()方法注册链接与回调函数;
  • 使用begin()方法启动服务器进行请求监听;
  • 使用handleClient()处理来自客户端的请求;

 

相关的代码如下

  1. #include <WiFi.h>
  2. #include <WebServer.h> //引入相应库
  3. const char *ssid = "********";
  4. const char *password = "********";
  5. WebServer server(80); //声明WebServer对象
  6. void handleRoot() //回调函数
  7. {
  8. server.send(200, "text/plain", "这是根页面");
  9. }
  10. void handleP1() //回调函数
  11. {
  12. server.send(200, "text/plain", "这是P1页面");
  13. }
  14. void setup()
  15. {
  16. Serial.begin(115200);
  17. Serial.println();
  18. WiFi.mode(WIFI_STA);
  19. WiFi.setSleep(false);
  20. WiFi.begin(ssid, password);
  21. while (WiFi.status() != WL_CONNECTED)
  22. {
  23. delay(500);
  24. Serial.print(".");
  25. }
  26. Serial.println("Connected");
  27. Serial.print("IP Address:");
  28. Serial.println(WiFi.localIP());
  29. server.on("/", handleRoot); //注册链接"/"与对应回调函数
  30. server.on("/p1", handleP1); //注册链接"/p1"与对应回调函数
  31. server.on("/p2", []() { //注册链接"/p2",对应回调函数通过内联函数声明
  32. server.send(200, "text/plain", "这是P2页面,由内联函数声明");
  33. });
  34. server.begin(); //启动服务器
  35. Serial.println("Web server started");
  36. }
  37. void loop()
  38. {
  39. server.handleClient(); //处理来自客户端的请求
  40. }

 代码解释

首先我们要引入两个库,一个是WiFi库,一个是web server库,并设置我们家里的WiFi密码和WiFi名称,然后设置回调函数以及提示相应的文字,在主函数中,我们设置串口通信梳理为115200。以及设置我们的WIFI工作模式为sta模式,设计通信WiFi的连接程序以及相应的回调函数。然后我们启动服务器,并让loop程序一直执行来处理来自客户端的请求。

三、路径参数的简单认识

第2个我们介绍一个简便方法。当我们处理的链接比较多时,并且链接具有相似的规律性。我们就没有必要对每个链接都进行注册,我们可以使用路径参数来处理这些相似或者是动态的链接,这样就让我们的编程变得更加简单和易于操作。相关的代码如下。

  1. #include <WiFi.h>
  2. #include <WebServer.h> //引入相应库
  3. const char *ssid = "********";
  4. const char *password = "********";
  5. WebServer server(80); //声明WebServer对象
  6. void handleArg1() //回调函数
  7. {
  8. String arg = server.pathArg(0);
  9. server.send(200, "text/plain", "这是链接/{},参数是: " + arg);
  10. }
  11. void handleArg2() //回调函数
  12. {
  13. String arg0 = server.pathArg(0);
  14. String arg1 = server.pathArg(1);
  15. server.send(200, "text/plain", "这是链接/p/{}/d/{},参数是: " + arg0 + " 、 " + arg1);
  16. }
  17. void setup()
  18. {
  19. Serial.begin(115200);
  20. Serial.println();
  21. WiFi.mode(WIFI_STA);
  22. WiFi.setSleep(false);
  23. WiFi.begin(ssid, password);
  24. while (WiFi.status() != WL_CONNECTED)
  25. {
  26. delay(500);
  27. Serial.print(".");
  28. }
  29. Serial.println("Connected");
  30. Serial.print("IP Address:");
  31. Serial.println(WiFi.localIP());
  32. server.on("/{}", handleArg1); //注册链接与回调函数
  33. server.on("/p/{}/d/{}", handleArg2); //注册链接与回调函数
  34. server.begin(); //启动服务器
  35. Serial.println("Web server started");
  36. }
  37. void loop()
  38. {
  39. server.handleClient(); //处理来自客户端的请求
  40. }

 代码在前面部分和上个例子一样,这里不多解释。我们主要看这两个回调函数。这两个回调函数是进行动态变化的重要元素,在主函数中,我们首先设置串口以及设置蓝牙的工作模式。和WiFi的连接判断程序。并启动服务器。再让循环函数一起执行,来自客户端的请求。

四、用户认证

上述的设置和网站链接都是让任何用户都可以访问的。现在我们可以将我们的链接设置增加一些安全性,让特定的用户进行访问和登录。换句话说,我们需要设置用户的登录名称和密码。让拥有正确登录名称和密码用户登录。

  1. #include <WiFi.h>
  2. #include <WebServer.h> //引入相应库
  3. const char *ssid = "********";
  4. const char *password = "********";
  5. WebServer server(80); //声明WebServer对象
  6. const char *username = "user"; //用户名
  7. const char *userpassword = "1234"; //用户密码
  8. void handleRoot() //回调函数
  9. {
  10. if (!server.authenticate(username, userpassword)) //校验用户是否登录
  11. {
  12. return server.requestAuthentication(); //请求进行用户登录认证
  13. }
  14. server.send(200, "text/plain", "登录成功!"); //登录成功则显示真正的内容
  15. }
  16. void setup()
  17. {
  18. Serial.begin(115200);
  19. Serial.println();
  20. WiFi.mode(WIFI_STA);
  21. WiFi.setSleep(false);
  22. WiFi.begin(ssid, password);
  23. while (WiFi.status() != WL_CONNECTED)
  24. {
  25. delay(500);
  26. Serial.print(".");
  27. }
  28. Serial.println("Connected");
  29. Serial.print("IP Address:");
  30. Serial.println(WiFi.localIP());
  31. server.on("/", handleRoot); //注册链接和回调函数
  32. server.begin(); //启动服务器
  33. Serial.println("Web server started");
  34. }
  35. void loop()
  36. {
  37. server.handleClient(); //处理来自客户端的请求
  38. }

首先我们引入两个库,设置WiFi名称和密码。并创建外把Siri的对象输入用户名和设置用户密码。这样只有正确的用户名和用户密码才可以访问这个链接。我们使用回调函数来验证用户是否登录以及请求进行登录认证的界面。在主函数中我们输入 WiFi的链接程序和判断程序,最后我们启动服务器以及让循环函数一直执行,来自客户端的请求。

五、总结

 

这期的学习较为简单,也比较通俗易懂。我们主要学习了web server的简单用法。其中包括基本语法以及他用来处理相似链接的方式,并且我们了解到了用户认证和提高链接安全性的一种保护手段。在代码方面,我们主要认识了回调函数以及 WiFi的连接和判断程序。
 


 


 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/196275
推荐阅读
相关标签
  

闽ICP备14008679号