IoT开发实战:CoAP卷【1.5】

3.5 HTTP

HTTP是Hyper Text Transfer Protocol(超文本传输协议)的缩写。它的发展是万维网协会(World Wide Web Consortium)和IETF(Internet Engineering Task Force)合作的结果。到目前为止,已经有很多个版本的HTTP被成功应用,包括HTTP 1.0和HTTP 1.1,HTTP 2.0也已发布并逐渐推向应用。相比于HTTP 1.X,HTTP 2.0有非常多的优势,但是本节依然以回顾HTTP 1.x为主。

CoAP借鉴了HTTP的大量成功经验,如果已经熟练掌握HTTP或Web开发的话,那么学习CoAP将变得相对简单。如果还没有接触过HTTP应用或Web开发的话,强烈建议动手尝试本节的例子。

3.5.1 动手尝试

在入门示例中,依然使用树莓派作为服务器,与TCP和UDP入门示例不同,此处树莓派将作为一个HTTP服务器。相比于TCP和UDP服务器角色,HTTP服务器需要承担更多的责任。此时浏览器将作为客户端,在浏览器的地址栏中输入树莓派的IP地址加上一个约定好的端口号便可访问树莓派提供的HTTP服务。HTTP服务通常被称为Web服务,在树莓派中建立一个Web服务有非常多的方法,有很多成熟的Web框架可以使用,如基于Python的Flask框架,或者基于Node.js的Express框架。动手尝试示例试图通过现象看本质,所以使用哪个框架并不重要。HTTP动手尝试示例的网络结构如图3-17所示。

图3-17 HTTP动手尝试入门示例

1.安装Python Flask

树莓派中已经默认安装了Python 2和Python 3,但并没有安装Flask框架,所以要给树莓派增加Web功能需要通过pip工具为Python 3安装Flask框架。在树莓派控制台中输入以下指令便可完成Flask框架安装。

sudo pip3 install flask

2.获取示例代码

为了减少读者编写代码的时间,可直接复制本书示例代码。HTTP示例代码位于review_demo/http_demo目录中。

mkdir repo
# clone代码仓库
git clone https://github.com/xukai871105/the_beginning_of_coap.git
# 进入目录
cd the_beginning_of_coap
# 进入网络技术回顾示例代码文件夹
cd review_demo
# 进入http示例目录
cd http_demo

3.Web后端实现

Web应用总是可分为前端实现和后端实现两部分。后端一般用于处理用户请求、从数据库获取数据、进行逻辑处理等工作。Web后端的实现代码app.py如下:

代码清单3-5 app.py

# -*- coding: utf-8 -*-
from flask import Flask, jsonify, render_template, request
app = Flask(__name__)
@app.route("/")
def index():
return render_template('index.html')
@app.route('/value', methods=['POST'])
def cal_value():
if request.method == 'POST':
a = request.form.get('a', 0, type=int)
b = request.form.get('b', 0, type=int)
return jsonify(result = a + b)
if __name__=="__main__":
app.run(host = '0.0.0.0',port = 8080, debug = True)

app.py主要有两个路由功能:一个路由可使用HTTP GET方法访问,返回一个html页面,该路由可理解为“主页面”;另一个路由可使用HTTP POST方法访问,返回两个参数a和b相加的结果。

(1)渲染index.html

若使用浏览器客户端访问根路由“/”,那么Web服务器将渲染一个index.html文件并把该文件返回给浏览器,index.html保存在http_demo的templates文件夹中。

@app.route("/")

def index():

return render_template('index.html')

(2)计算参数a和b之和

若浏览器客户端访问路由“/value”,那么Web服务器将取出客户端请求中的两个参数a和b,计算两者之和并把结果作为

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BinaryStarXin

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值