博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python:接口开发
阅读量:4949 次
发布时间:2019-06-11

本文共 4138 字,大约阅读时间需要 13 分钟。

一、flask

flask是一个python编写的轻量级框架,可以使用它实现一个网站或者web服务。本文就用flask来开发一个接口。

flask需要先安装再引用。pip install flask

用flask开发接口的流程为:

1、定义一个server

server=flask.Flask(__name__) #__name__代表当前的python文件。把当前的python文件当做一个服务启动

2、然后定义接口函数,一般函数和接口函数的区别在于,定义为接口的函数上方要特别加上:

@server.route('/index',methods=['get','post']) #第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是get

 

@server.route('/index',methods=['get','post'])#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是getdef index():    res={
'msg':'这是我开发的第一个借口','msg_code':0} return json.dumps(res,ensure_ascii=False)

3、让server执行起来

server.run(port=7777,debug=True,host='0.0.0.0')

#port可自定义填写。不要与机器上已占用的port冲突。 #debug=True,在代码进行修改后,程序会自动重新加载,不用再次运行。也就是运行一次即可,即使改动代码,也不需要重启服务 #host本地ip地址,写0.0.0.0,可以让其他人直接访问本机的ip。 #最终这个接口的访问地址就是  http://127.0.0.1/index  ,get方法或者post方法都可。返回数据是json格式res内容

示例:

import flask,jsonserver=flask.Flask(__name__)#__name__代表当前的python文件。把当前的python文件当做一个服务启动@server.route('/index',methods=['get','post'])#第一个参数就是路径,第二个参数支持的请求方式,不写的话默认是getdef index():    res={
'msg':'这是我开发的第一个借口','msg_code':0} return json.dumps(res,ensure_ascii=False)server.run(port=7777,debug=True,host='0.0.0.0')

接口访问中,经常会需要输入参数。那么如果要接受传入的参数,则可用以下方法:

  username=flask.request.values.get('username')

示例:

import flask,jsonserver=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串做一下操作:

res = flask.make_response(json_res) #json_res是接口返回数据。然后对json_res在做操作,构造成返回结果的对象

res.set_cookie(key,session_id,3600) #最后的数字是cookie的失效时间。这样设置以后,在执行登录接口成功登录,则会同时在本地加入cookie。其中key和session_id的值根据实际情况定义

例子:

@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中内容和服务器中的内容进行比对,如果有一致的,说明已成功登录

@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 = flask.request.values.get('title')#获取文章标题        conent = flask.request.values.get('content')#获取文章内容        article_key ='article:%s'%title     #key都以article开头        tools.op_redis(article_key,conent) #把文章写入redis        res = {
'msg':'文章发表成功!','code':0} else: res = {
'msg':'用户未登录!','code':2009} return json.dumps(res,ensure_ascii=False)

 

 

转载于:https://www.cnblogs.com/bendouyao/p/9019955.html

你可能感兴趣的文章
android 重用 c代码
查看>>
vs2012 html5
查看>>
jsp 下载
查看>>
IE6下position:fixed不支持问题及其解决方式
查看>>
mysql中Access denied for user 'root'@'localhost' (using password:YES)
查看>>
云服务器挂载/dev/vdb1磁盘
查看>>
Mysql数据类型
查看>>
手机抓包方法
查看>>
Scala构造顺序和提前定义
查看>>
图片与文字的对齐和元素的垂直水平居中
查看>>
[译]Java 设计模式之迭代器
查看>>
Webdriver中PageFactory的正确用法
查看>>
关于C语言中EOF的一点认识
查看>>
字符编码笔记:ASCII,Unicode和UTF-8
查看>>
JSP 动作元素
查看>>
前端上传组件Plupload使用指南
查看>>
interval
查看>>
UNP Chapter 5 - TCP客户-服务器程序例子
查看>>
开窗函数Over用法
查看>>
开篇 - 重回Blog
查看>>