ESP8266之ESP8266WebServer库学习

原文地址:https://blog.csdn.net/qq_41477556/article/details/113032520

ESP8266WebServer库

 

文章目录

 

1.webserver管理方法

1.1 ESP8266WebServer() —— 创建web server

 ESP8266WebServer(IPAddress addr, int port = 80);

参数说明:

addr: ip地址

port: 端口号,默认为80

ESP8266WebServer(int port = 80);

  • 参数说明:

    port: 端口号

1.2 begin() —— 启动web server

  • void begin();
    
  • void begin(uint16_t port);
    

 

  • 参数说明:

    port: 端口号

  • begin函数要在配置好各个请求后在使用

1.3 close() —— 关闭web server

void close();

1.4 stop() —— 关闭web server

void stop();

2. 配置client请求处理方法

2.1 on() —— 请求响应回调

void on(const String &url, THandlerFunction handler);

参数介绍:

url: 路径

handler: 对应url的处理函数

注: 这里的handler函数是Http_ANY,不区分GET,POST等

void on(const String &url, HTTPMethod method, THandlerFunction fn);

参数介绍:

url: 路径

method: Http请求方法( HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, TTP_DELETE, HTTP_OPTIONS )

fn: 对应url的处理函数

void on(const String &url, HTTPMethod method, 
		THandlerFunction fn, ThandlerFunction ufn);

参数介绍:

url: 路径

method: Http请求方法( HTTP_ANY, HTTP_GET ,HTTP_POST, HTTP_PUT, HTTP_PATCH, TTP_DELETE, HTTP_OPTIONS )

fn: 对应utl的处理函数

ufn: 文件上传处理函数

2.2 onNotFound() —— 配置无效url的handler

void onNotFound(THandlerFunction fn);

 

参数介绍:

fn: 对应的处理函数

注: 当找不到相对应的http请求处理函数时会调用该函数配置的fn方法

2.3 onFileUpload() —— 配置处理文件上传的hanlder

void onFileUpload(THandlerFunction fn);

参数介绍:

fn: 对应的处理函数

3. 获取请求方法

3.1 url() —— 获取请求的url

String url();
  • 1

3.2 method() —— 获取请求方法

HTTPMethod method()

参数介绍:

返回值: HTTP_ANY, HTTP_GET, HTTP_POST, HTTP_PUT, HTTP_PATCH, HTTP_DELETE, HTTP_OPTIONS

3.3 arg() —— 获取请求参数的值

String arg(String name);

参数介绍:

name: 根据关键字name获取请求参数的值

String arg(int i);

参数介绍:

i: 获取第i个请求参数的值

3.4 argName() —— 获取请求参数的名称

String argName(int i);

参数介绍:

i: 获取第i个参数的名称

3.5 args() —— 获取参数个数

int args();

3.6 hasArg() —— 是否存在某个参数

bool hasArg(String name);

3.7 collectHeaders() —— 设置需要收集的请求头

void collectHeaders(const char* headerKeys[], const size_t headerKeysCount); 

参数介绍:

headerkeys[]: 请求头的名字

headerkeysCount: 请求头的个数

3.8 header() —— 获取请求头参数

String header(String name);

参数设置:

name: 请求头名字

String header(int i);

参数介绍:

i: 获取第i个请求头参数

3.9 headerName() —— 获取请求头名字

String headerName(int i);

参数介绍:

i: 获取第i个请求头名

3.10 headers() —— 获取请求头个数

int headers();

3.11 hasHeader() —— 判断是否存在某个请求头

bool hasHeader(String name);

3.12 hostHeader() —— 获取请求头Host的值

String hostHeader();

3.13 authenticate() —— 认证校验

bool authenticate(const char * username, const char * password);

参数介绍:

username: 用户账号

password: 用户密码

3.14 handleClient() —— 处理http请求

void handleClient();

4. 响应client请求方法

4.1 upload() —— 处理文件上传

HTTPUpload& upload();

使用实例:

//实例说明 非完整代码,无法直接运行,理解即可
/**
 * 处理文件上传 HandlerFunction
 * 此方法会在文件上传过程中多次回调,我们可以判断上传状态
 */
void handleFileUpload() {
  //判断http requestUri
  if (server.uri() != "/edit") {
    return;
  }
  //获得 Http上传文件处理对象
  HTTPUpload& upload = server.upload();
  //文件开始上传
  if (upload.status == UPLOAD_FILE_START) {
    String filename = upload.filename;
    if (!filename.startsWith("/")) {
      filename = "/" + filename;
    }
    DBG_OUTPUT_PORT.print("handleFileUpload Name: "); DBG_OUTPUT_PORT.println(filename);
    //本地文件系统创建一个文件用来保存内容
    fsUploadFile = SPIFFS.open(filename, "w");
    filename = String();
  } else if (upload.status == UPLOAD_FILE_WRITE) {
    //文件开始写入文件
    //DBG_OUTPUT_PORT.print("handleFileUpload Data: "); DBG_OUTPUT_PORT.println(upload.currentSize);
    if (fsUploadFile) {
      //写入文件
      fsUploadFile.write(upload.buf, upload.currentSize);
    }
  } else if (upload.status == UPLOAD_FILE_END) {
    //文件上传结束
    if (fsUploadFile) {
      fsUploadFile.close();
    }
    DBG_OUTPUT_PORT.print("handleFileUpload Size: "); DBG_OUTPUT_PORT.println(upload.totalSize);
  }
}

//注册文件上传处理回调
server.on("/edit", HTTP_POST, []() {
    server.send(200, "text/plain", "");
  }, handleFileUpload);

 

4.2 sendHeader() —— 设置响应头

void sendHeader(const String& name, const String& value, bool first = false);

参数介绍:

name: 响应头名

value: 响应头值

first: 是否需要放在第一行

4.3 setContentLength() —— 设置响应体长度

void setContentLength(const size_t contentLength);

4.4 sendContent()/sendContent_P() —— 发送响应内容

void sendContent(const String& content);
void sendContent_P(PGM_P content);
void sendContent_P(PGM_P content, size_t size);

4.5 streamFile() —— 发送响应文件流

size_t streamFile(T &file, const String& contentType);

参数介绍:

file: 具体文件

contentType: 响应类型

4.6 send() —— 发送响应数据

void send(int code, const char* content_type = NULL, const String& content = String(""));
void send(int code, char* content_type, const String& content);
void send(int code, const String& content_type, const String& content);
void send_P(int code, PGM_P content_type, PGM_P content);
void send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength);

参数介绍:

code: 响应状态码

content_type: 响应内容类型

& content = String(""));
void send(int code, char* content_type, const String& content);
void send(int code, const String& content_type, const String& content);
void send_P(int code, PGM_P content_type, PGM_P content);
void send_P(int code, PGM_P content_type, PGM_P content, size_t contentLength);

参数介绍:

**code:** 响应状态码

**content_type:** 响应内容类型

**content:** 具体响应内容

 

  • 3
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值