最近,基于python的flask框架,搭建了一个简易的本地服务器。目前,可以通过浏览器访问服务器,并查看或传递数据。
一、搭建服务器
基于flask框架搭建服务器的代码如下:
from flask import Flask, request, render_template
import json
app = Flask(__name__)
content = {}
@app.route('/name', methods=['POST', 'GET'])
def get_name():
'''
处理客户端上传的JSON数据
:return:
'''
#content = None
global content
if request.method == 'POST':
content = request.get_json()
#name = request.json.get('name')
# get_data = request.args.to_dict()
# name = get_data['name']
# content['name'] = name
if content is None:
print("当前无任何数据")
else:
print(content)
# print(name)
print(type(content))
return dict(name="123", fan="100")
#return
elif request.method == 'GET':
#name = request.args.get('name', '')
#name = request.json.get('name')
# if request.args is not None:
# get_data = request.args.to_dict()
# name = get_data['name']
# content['name'] = name
if content is not None:
#print(name)
print(content, type(content))
return content
#content = request.get_json()
#主要使用该路由,上个路由在本例中没用到,但是可以用于学习过程中调试使用。
#app.route 就是设置路由的过程
@app.route('/shezhi', methods=['POST', 'GET'])
def set_dist():
canshu = {'x': 50, 'y': 80}
setdist = 50 #设置初始值
if request.args.get("setdist") is not None:
setdist = request.args.get("setdist")
if request.form.get("setdist") is not None:
setdist = request.form.get("setdist")
print(setdist)
# if request.args is not None:
# canshu['x'] = request.args.get("x")
return render_template("myhtml.html", msg="设定成功", valuedist=setdist, circles_x=canshu['x'], circles_y=canshu['y'])
if __name__ == "__main__":
app.run(host='0.0.0.0', port=5000, debug=True)
其中,return render_template(“myhtml.html”, msg=“设定成功”, valuedist=setdist, circles_x=canshu[‘x’], circles_y=canshu[‘y’])主要是返回了一个html格式模板。
二、创建html文件
需要在PyCharm中,创建一个myhtml.html文件(myhtml是文件名,可以随便命名)。上述通过flask搭建服务器的程序写在了atvi.py里,如下图所示。(其余.py文件跟本例无关,可忽略)
myhtml.html代码如下
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
x坐标: {{circles_x}}
<hr/>
y坐标: {{circles_y}}
<hr/>
<form action="/shezhi" method="POST">
当前设定距离: {{valuedist}}<br/>
<input type="text" name="setdist">
<input type="submit" value="设置"><br/>
{{msg}}
</form>
</body>
</html>
三、启动服务器
上述工作完成之后,直接run atvi.py即可。跑起来之后会显示下图中的情况。
四、通过浏览器访问
打开浏览器,输入http://127.0.0.1:5000/shezhi 显示如下图所示。
这就实现了浏览器访问服务器的过程。
五、Node-red访问服务器
这里目前就不科普如何搭建和配置Node-red。网上有很多相关教程,按照教程配置即可。
第一步:打开cmd,输入node-red即可启动。如下图所示。
第二步:打开浏览器,输入http://127.0.0.1:1880/。进入到node-red搭建页面。找到并拖入相应的程序块。
第三步:双击Button进行配置,这个块感觉没有过多的配置。主要是在Payload处输入一个空格,防止乱码。
第四步:双击text input,将Delay(ms)改为0(默认值应该是300)。
第五步:双击http请求(http request)进行设置。
第六步:设置完成之后,点击部署。依次点击下图中三个圆圈。
第七步:进入到控制台中。输入任意数字后,点击BUTTON。
结果
结果可以在服务器端查看到print的数字。
以上就是整个实现过程。本人对于node-red了解并不深入,仅有一些浅薄的知识。写这篇博文主要是进行一些记录和梳理(记忆力有限,担心自己会忘)。若有什么错误或者更好的思路,还请评论批评指正(抱拳)。