9144| 1
|
[ESP32系列教程] ESP32 Picoweb教程:获取请求的HTTP方法 |
介绍 本 esp32 picoweb 教程的目的是解释如何从执行给 micropython picoweb 应用程序的请求中获取 http 方法。 通过本esp32 模块教程所显示的测试是使用集成在esp32 开发板中的 DFRobot 的 esp-wroom-32 设备执行的。该代码是在 upycaft 上开发的。您可以在前面的帖子中检查如何使用 upycaft:ESP32 MicroPython教程:uPyCraft IDE入门。 代码 像往常一样,我们将首先导入所需的模块并将ESP32连接到WiFi网络,从而在测试时可以从Web浏览器对其进行访问。为简单起见,我在此处明文显示了WiFi连接代码,这段代码可以很容易地封装在模块内的函数中。 [mw_shl_code=applescript,true]import picoweb import network ssid = "yourNetworkName" password = "yourPassword" station = network.WLAN(network.STA_IF) station.active(True) station.connect(ssid, password) while station.isconnected() == False: pass ip = station.ifconfig()[/mw_shl_code] 在连接WiFi之后,我们将创建一个Picoweb app实例,并声明一条路由,通过这条路由获取一个请求(request)并检查HTTP方法。在此示例中,我们将使用索引路由。 [mw_shl_code=applescript,true]@app.route("/") def index(req, resp): #Handling function code[/mw_shl_code] 请注意,先前声明的处理函数有两个参数,这两个参数由系统框架自动赋值。正如我们在之前的教程中看到的那样,第二个参数是一个数据流写入器(StreamWriter),我们用它将响应发送回客户端。 第一个参数我们在之前还没使用过,它是一个HTTPRequest类对象,可提供关于所接收的请求(request)的一些信息。 因此,为了获得所接收的请求(request)的HTTP方法,我们只需访问HTTPRequest类对象的方法属性即可。注意,当我们指定路由处理函数的参数时,我们调用了对象req。 [mw_shl_code=applescript,true]method = req.method print("Method was:" + method)[/mw_shl_code] 现在,我们已经知道了这个方法,接下来我们将在路由上构建一个简单的逻辑,即,当方法为POST时返回“不允许的HTTP方法”错误,否则返回一些测试信息。 关于如何返回HTTP错误的信息,请查看之前的文章。“不允许的方法”对应的错误代码为405[1]。 [mw_shl_code=applescript,true]if method == "POST": yield from picoweb.http_error(resp, "405") else: yield from picoweb.start_response(resp) yield from resp.awrite("HTTP method was allowed")[/mw_shl_code] 最后,我们将调用run方法启动这个app。脚本的完整代码如下所示。 [mw_shl_code=applescript,true]import picoweb import network ssid = "yourNetworkName" password = "yourPassword" station = network.WLAN(network.STA_IF) station.active(True) station.connect(ssid, password) while station.isconnected() == False: pass ip = station.ifconfig() app = picoweb.WebApp("myApp") @app.route("/") def index(req, resp): method = req.method print("Method was:" + method) if method == "POST": yield from picoweb.http_error(resp, "405") else: yield from picoweb.start_response(resp) yield from resp.awrite("HTTP method was allowed") app.run(debug=True, host =ip[0])[/mw_shl_code] 测试代码 为了测试代码,只需将脚本上传到ESP32开发板上并运行即可。在执行时,URL应该打印到控制台上。为了测试GET方法,只需复制此URL并将其粘贴到Web浏览器上即可。您将看到类似于图1的输出结果,它显示了我们在返回代码中定义的内容。 图1 - 通过Web浏览器对ESP32 Picoweb app执行HTTP GET请求的输出结果 对于此请求,如果我们检查MicroPython提示符中的输出,会发现它显示了正确的方法,如图2所示。 图2 - 响应HTTP GET请求的路由处理函数的输出结果 为了测试发送一个HTTP POST请求,我们可以使用像Postman这样的工具,它可以使发送HTTP请求的过程非常简单。您可以在此处查看有关如何使用Postman发送HTTP POST请求的视频简介。 图3显示了使用此工具发送POST请求的输出结果。可以看出,正如预期那样,返回的HTTP代码是405。 图3 - 通过Postman执行HTTP POST请求的输出结果 最后,如果我们回到MicroPython控制台,会发现控制台上也显示了正确的HTTP方法,如图4所示。 图4 - 路由处理函数对一个HTTP POST请求的输出结果 注:本文作者是Nuno Santos,他是一位和蔼可亲的电子和计算机工程师,住在葡萄牙里斯本 (Lisbon)。 他写了很多有关ESP32、ESP8266的有用的教程和项目。 查看更多ESP32/ESP8266教程和项目,请点击 : ESP32教程汇总贴 英文版教程 : ESP32 tutorial |
© 2013-2024 Comsenz Inc. Powered by Discuz! X3.4 Licensed