本文摘自php中文网,作者藏色散人,侵删。

一、flask
flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。
flask需要先安装再引用。pip install flask
用flask开发接口的流程为:
1、定义一个server
1 | server=flask.Flask(__name__) #__name__代表当前的python文件。把当前的python文件当做一个服务启动
|
2、然后定义接口函数,一般函数和接口函数的区别在于,定义为接口的函数上方要特别加上:
1 2 3 4 5 6 | @server.route( '/index' ,methods=[ 'get' , 'post' ]) #第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get
@server.route( '/index' ,methods=[ 'get' , 'post' ])#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get
def index():
res={ 'msg' : '这是我开发的第一个借口' , 'msg_code' :0}
return json.dumps(res,ensure_ascii=False)
|
3、让server执行起来
1 2 3 4 5 | server.run(port=7777,debug=True,host= '0.0.0.0' )
#port可自定义填写。不要与机器上已占用的port冲突。
#debug=True,在代码进行修改后,程序会自动重新加载,不用再次运行。也就是运行一次即可,即使改动代码,也不需要重启服务
#host本地ip地址,写0.0.0.0,可以让其他人直接访问本机的ip。
#最终这个接口的访问地址就是 http:
|
示例:
1 2 3 4 5 6 7 | import flask,json
server=flask.Flask(__name__)#__name__代表当前的python文件。把当前的python文件当做一个服务启动
@server.route( '/index' ,methods=[ 'get' , 'post' ])#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get
def index():
res={ 'msg' : '这是我开发的第一个借口' , 'msg_code' :0}
return json.dumps(res,ensure_ascii=False)
server.run(port=7777,debug=True,host= '0.0.0.0' )
|
接口访问中,经常会需要输入参数。那么如果要接受传入的参数,则可用以下方法:
1 | username=flask.request.values.get( 'username' )
|
示例:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | import flask,json
server=flask.Flask(__name__)#__name__代表当前的python文件。把当前的python文件当做一个服务启动
@server.route( '/reg' ,methods=[ 'post' ])#只有在函数前加上@server.route (),这个函数才是个接口,不是一般的函数
def reg():
username=flask.request.values.get( 'username' )
passwd=flask.request.values.get( 'passwd' )
if username and passwd:
sql= 'select * from my_user where username="%s";' %username
print (sql)
if my_db(sql):
res={ 'msg' : '用户已存在' , 'msg_code' :2001}
else :
insert_sql= 'insert into my_user (username,passwd,is_admin) values ("%s","%s",0);' %(username,passwd)
my_db(insert_sql)
res={ 'msg' : '注册成功' , 'msg_code' :0}
else :
res={ 'msg' : '必填字段未填,请查看接口文档' , 'msg_code' :1001} #1001表示必填接口未填
return json.dumps(res,ensure_ascii=False)
server.run(port=7777,debug=True,host= '0.0.0.0' )
#端口不写默认是5000.debug=True表示改了代码后不用重启,会自动帮你重启.host写0.0.0.0,别人就可以通过ip访问接口。否则就是127.0.0.1
|
二、cookie操作处理
假设在做登录接口的时候,要添加cookie到本地,则需要对接口返回的json串做一下操作:
1 2 | res = flask.make_response(json_res) #json_res是接口返回数据。然后对json_res在做操作,构造成返回结果的对象
res.set_cookie(key,session_id,3600) #最后的数字是cookie的失效时间。这样设置以后,在执行登录接口成功登录,则会同时在本地加入cookie。其中key和session_id的值根据实际情况定义
|
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @server.route( '/login' ,methods=[ 'get' ])
def login():
username = flask.request.values.get( 'username' )
pwd = flask.request.values.get( 'pwd' )
if username == 'zy' and pwd== '123456' :
session_id = tools.my_md5(username+time. strftime ( '%Y%m%d%H%M%S' ))
key = 'txz_session:%s' %username
tools.op_redis(key,session_id,600)
res = { 'session_id' :session_id, 'error_code' :0, 'msg' : '登录成功' ,
'login_time' :time. strftime ( '%Y%m%d%H%M%S' ) } #给用户返回的信息
json_res = json.dumps(res,ensure_ascii=False)#返回结果弄成json
res = flask.make_response(json_res) #构造成返回结果的对象
res.set_cookie(key,session_id,3600) #最后的数字是cookie的失效时间。
return res
|
以上操作可成功保存cookie到本地。以后接口中需要使用coookie的时候,只需获取:
cookies = flask.request.cookies #所有的cokies,是个字典。然后可通过字典获取到对应的cookie,并执行操作。
例:比如在做一些操作的时候,必须在登录状态下才可以,这时候就可以直接拿本地登录时的cookie中内容和服务器中的内容进行比对,如果有一致的,说明已成功登录
1 2 3 4 5 6 7 8 9 10 11 12 | @server.route( '/posts' )
def posts():
cookies = flask.request.cookies #所有的cokies
username = '' #
session = '' #定义这两个变量是为了,在没有传cookie的时候用的。
for key,value in cookies.items():
if key.startswith( 'txz_session' ): #判断cookie以txz_session开头的话,取到它
username = key
session = value #调用接口的时候用户传过的seesion,从cookie里面取过来的
redis_session = tools.op_redis(username) #从redis里面获取到的的cookie
if redis_session == session: #判断传过来的seeion和redis里面的session一样
title = f
|
相关推荐:《Python教程》
以上就是python接口怎么写的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
pycharm怎么汉化
Python中格式化字符串有什么方法?(对比介绍)
只会Python能做什么工作
Python 定时修改数据库的示例代码_Python
Python如何重命名文件
类的实例化介绍
Python使用join的两个实例分享
Python操作文件方法
Python3.6如何导入excel里面的数据
如何把字符串转化成时间
更多相关阅读请进入《Python》频道 >>
人民邮电出版社
python入门书籍,非常畅销,超高好评,python官方公认好书。
转载请注明出处:木庄网络博客 » python接口怎么写