微信小程序与云服务器沟通,学会这2招,你可以拥有自己的小程序–Python+Flask+Tornado+Nginx
上期文章我们分享了如何使用Python+Flask+Tornado+Nginx部署自己的web服务器,待我们部署完自己的小程序后,如何使用微信开发,或者头条开发自己的小程序?小程序如何跟服务费打交道,本期文章带你看http 的get 与post 方法
http协议
在了解get和post之前,我们要先了解TCP/IP和http。简单来说,TCP/IP是网络架构,TCP/IP是五层网络架构(区分于OSI七层架构),TCP/IP自上而下分为应用层,传输层,网络层,数据链路层,物理层。Http是位于应用层的协议,TCP位于传输层(区别于UDP),IP是位于网络层的。简单来说,Http是基于TCP/IP的一种通信协议(超文本传输协议,所有www都必须遵循这个协议,你所看到的网页都是基于这个协议)。
Http定义了与服务器交互的不同方法,最基本的方法有4种,分别是GET,POST,PUT,DELETE。URL全称是资源描述符,我们可以这样认为:一个URL地址,它用于描述一个网络上的资源,而HTTP中的GET,POST,PUT,DELETE就对应着对这个资源的查,改,增,删4个操作。到这里,大家应该有个大概的了解了,GET一般用于获取/查询资源信息,而POST一般用于更新资源信息。
get会产生一个TCP数据包,POST会产生两个TCP数据包。
get会发送http header和data给服务端,服务端返回一个200,请求成功。
post会先发送http header给服务端,告诉服务端等一下会有数据过来,服务端返回100,告诉客户端我已经准备接收数据,post在发送一个data给服务端,服务端返回200,请求成功。g
无论是get请求或者post请求,都可以与云服务器沟通数据,只是在开发时,代码略有区别
代码实战
小程序的get请求
flask 的web服务,默认是get请求,首先我们设计服务器端的代码:
from flask import Flask, render_template, request, Response
app = Flask(__name__)
@app.route('/login', methods=[' GET '])
def login():
pwd = request.args.get('pwd')
username = request.args.get('username')
#username = request.form['username']
#pwd = request.form['pwd']
if username == '123'and pwd == '123':
return '成功'
else:
return '失败'
if __name__ == '__main__':
app.run()
我们按照最简单的登录验证的例子来讲述get 与post的区别
以上代码的意思是当有get请求/login 的url地址时,服务器来接受客户端传递的数据
接受数据使用request.args.get函数来接受
小程序端代码:
tt.request({
url: '127.0.0.1/login', //本地服务器地址
data: {
'pwd': '123',
'username':'123'
},
method: 'GET',
header: {
"Content-Type": "application/json" //默认值
},
success: function (res) {
print(res.data)
}
})
微信小程序(wx.request)或者头条小程序(tt.request)都设计有request请求函数来处理url请数据请求
以上便是头条小程序端的代码设计,我们填写url的请求地址,请求的数据data,设计请求方式为get
设计请求的header
当请求完成后,服务器返回请求的数据给小程序,我们直接在sucess函数里面便可以打印服务器传递的数据res.data
有了服务器的数据,便可以 处理一些数据。
小程序的post请求
小程序的post请求,服务器端代码
from flask import Flask, render_template, request, Response
app = Flask(__name__)
@app.route('/login', methods=[' POST'])
def login():
username = request.form['username']
pwd = request.form['pwd']
if username == '123'and pwd == '123':
return '成功'
else:
return '失败'
if __name__ == '__main__':
app.run()
与get请求不同的是,请求方式设计为post,处理数据使用request.form函数
通过以上基础知识的了解,由于post请求是表单类的请求,这里获取数据自然使用form表单类函数
小程序端代码:
当然post请求,客户端的代码也稍微有所区别
tt.request({
url: '127.0.0.1/login', //本地服务器地址
data: {
'pwd': '123',
'username':'123'
},
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
print(res.data)
}
})
通过以上代码,可以看到主要的区别是post请求的header与get的header不同
无论哪种请求方式,小程序都可以与服务器进行数据的交流沟通,当然,你也可以使用服务器上的数据库,关于python数据库的操作,小伙伴们可以参考往期的文章分享。
ok,通过以上的分享,广大小伙伴们可以自行尝试快速搭建自己 的服务器以及小程序,中间过程中若有不明白的可以相互沟通交流