Python学习之==>有依赖关系的接口开发
一、接口需求
1、登录接口
(1)登录成功后将session信息存入redis数据库并设置失效时间为600秒
(2)构造返回结果的对象flask.make_response()
(3)产生cookie,失效时间同样设定为600秒
2、发帖接口
(1)根据登录接口成功写入的cookie来判断用户是否登录
(2)判断用户传过来的session和redis数据库中存入的session是否一致
(3)如果一致的话则进行发帖操作
二、代码实现
import flask,time,json
from lib.tools import my_md5,op_redis
server = flask.Flask(__name__) @server.route('/login')
def login():
username = flask.request.values.get('username')
pwd = flask.request.values.get('pwd')
if username == 'luolei' and pwd == '':
session_id = my_md5(username+time.strftime('%Y%m%d%H%M%S'))
key = 'session:%s'%username
op_redis(key,session_id,600)
res = {'sessionid':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,600)#600是cookie的失效时间
return res # 有依赖关系的接口
# 根据上面登录成功写入的cookie来判断用户是否登录,然后进行发帖操作
@server.route('/posts')
def posts():
username = ''
session = '' # 定义这两个变量是为了在没有传cookie的时候用的
cookies = flask.request.cookies # 获取所有的cookie
for key,value in cookies.items():
if key.startswith('session:'): # 判断cookie是否以session开头
username = key
session = value # 调用接口的时候用户传过来的session,从cookie中获取到的
redis_session = op_redis(username) # 从redis中获取到的cookie
if redis_session == session: # 判断用户传过来的session和redis里面的session是否一样
title = flask.request.values.get('title')
content = flask.request.values.get('content')
article_key = 'article_key:%s'%title
op_redis(article_key,content) # 把文章写入redis
res = {'msg':'文章发表成功','code':0000}
else:
res = {'msg':'用户未登录','code':2001}
return json.dumps(res,ensure_ascii=False)
三、项目添加环境变量
import sys,os
os.path.abspath(__file__) # 获取到当前文件的绝对路径
os.path.dirname(__file__) # 获取父目录,获取它的上一级目录
BASE_PATH = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # 获取到当前程序的主目录
sys.path.insert(0,BASE_PATH) # 将程序主目录加入python环境变量
Python学习之==>有依赖关系的接口开发的更多相关文章
- python 学习笔记(十四)有依赖关系的接口开发
接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系.在发帖时就需要先获取用户的session,与当前登录用户进行校验对 ...
- Spring框架学习之高级依赖关系配置(一)
上篇文章我们对Spring做了初步的学习,了解了基本的依赖注入思想.学会简单的配置bean.能够使用Spring容器管理我们的bean实例等.但这还只是相对较浅显的内容,本篇将介绍bean的相关更高级 ...
- Python基础-修改excel、redis、接口开发、组织代码
pymysql模块补充内容 1. 游标.description():显示表的字段属性 (什么是游标:游标用于交互式应用,就好比word里的光标一样,要修改某个地方,要先把光标移动到这里) 用好这个方法 ...
- Spring框架学习之高级依赖关系配置(二)
紧接着上篇内容,本篇文章将主要介绍XML Schema的简化配置和使用SpEL表达式语言来优化我们的配置文件. 一.基于XML Schema的简化配置方式 从Spring2.0以来,Spring支持使 ...
- 【Python】djangorestframework 基于django框架的接口开发
官网:http://www.django-rest-framework.org/#installation 下载:https://pypi.python.org/pypi/djangorestfram ...
- 微软企业库5.0 学习之路——扩展学习篇、库中的依赖关系注入(重构 Microsoft Enterprise Library)[转]
这篇文章是我在patterns & practices看到的一篇有关EntLib5.0的文章,主要介绍了EntLib5.0的这次的架构变化由来,觉得很不错,大家可以看一下! 在过去几年中,依赖 ...
- 类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)
类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图. ...
- Postman 使用技巧之多环境测试及接口依赖关系处理
一.前言 在日常开发中,除了正常的单元测试,某些情况我们还需要测试 HTTP 接口,团队中目前使用的是「 Postman 」这款 API调试 . HTTP 请求工具.通常我们将经常要测试的接口按照项目 ...
- python学习 day017打卡 类与类之间的关系
本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖 ...
随机推荐
- MSDN上对yield关键字的示例
public class PowersOf2 { static void Main() { // Display powers of 2 up to the exponent of 8: , )) { ...
- sudo 及visudo用法
visudo 编辑sudoers文件 1.命令功能 bisudo命令是专门用来编辑/etc/sudoers文件,同时提供语法检查等功能./etc/sudoes文件是sudo命令的配置文件. 2.语法格 ...
- zabbix命令之:zabbix_sender命令
zabbix server除了可以从客户端主动获取数据,客户端也可以主动将数据推送给服务端,客户端通过zabbix_sender指令来实现向服务端主动推送数据. 在zabbix客户端安装 配置yum源 ...
- form表单和CSS
一.form表单 1. form表单有什么用 能够获取用户输入的信息(输入,选择, 上传的文件),并且将这些数据全部发送给后端 2. form表单的用法 (1)有两个重要参数: action : 控制 ...
- 在UIScrollView、UICollectionView和UITableView中添加UIRefreshControl实现下拉刷新
Apple在iOS 6中添加了UIRefreshControl,但只能在UITableViewController中使用,不能在UIScrollView和UICollectionView中使用. 从i ...
- Python代码2转3、3转2的方法
众所周知,Python2和Python3不兼容. 那么,假如遇到了超大的工作量,我们是不是需要一行一行地手动去改呢? 当然不是. (一)2转3 Python3.7(顺便提一句,现在装3.7发现好像安装 ...
- CDOJ 1146 A - 秋实大哥与连锁快餐店 最小生成树 Prim算法 稠密图
题目链接 A - 秋实大哥与连锁快餐店 Time Limit:3000MS Memory Limit:65535KB 64bit IO Format:%lld & %llu S ...
- Python常用的库简单介绍一下
Python常用的库简单介绍一下fuzzywuzzy ,字符串模糊匹配. esmre ,正则表达式的加速器. colorama 主要用来给文本添加各种颜色,并且非常简单易用. Prettytable ...
- BZOJ 4417 Luogu P3990 [SHOI2013]超级跳马 (DP、矩阵乘法)
题目链接: (bzoj) https://www.lydsy.com/JudgeOnline/problem.php?id=4417 (luogu)https://www.luogu.org/prob ...
- splice()、slice()、split()函数的区分
1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符 ...