一、接口需求

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学习之==>有依赖关系的接口开发的更多相关文章

  1. python 学习笔记(十四)有依赖关系的接口开发

    接口开发中存在很多有依赖关系的接口,例如:BBS中发帖的时候就需要进行校验用户是否登录,那么此时发帖的接口就与用户登录接口有依赖关系.在发帖时就需要先获取用户的session,与当前登录用户进行校验对 ...

  2. Spring框架学习之高级依赖关系配置(一)

    上篇文章我们对Spring做了初步的学习,了解了基本的依赖注入思想.学会简单的配置bean.能够使用Spring容器管理我们的bean实例等.但这还只是相对较浅显的内容,本篇将介绍bean的相关更高级 ...

  3. Python基础-修改excel、redis、接口开发、组织代码

    pymysql模块补充内容 1. 游标.description():显示表的字段属性 (什么是游标:游标用于交互式应用,就好比word里的光标一样,要修改某个地方,要先把光标移动到这里) 用好这个方法 ...

  4. Spring框架学习之高级依赖关系配置(二)

    紧接着上篇内容,本篇文章将主要介绍XML Schema的简化配置和使用SpEL表达式语言来优化我们的配置文件. 一.基于XML Schema的简化配置方式 从Spring2.0以来,Spring支持使 ...

  5. 【Python】djangorestframework 基于django框架的接口开发

    官网:http://www.django-rest-framework.org/#installation 下载:https://pypi.python.org/pypi/djangorestfram ...

  6. 微软企业库5.0 学习之路——扩展学习篇、库中的依赖关系注入(重构 Microsoft Enterprise Library)[转]

    这篇文章是我在patterns & practices看到的一篇有关EntLib5.0的文章,主要介绍了EntLib5.0的这次的架构变化由来,觉得很不错,大家可以看一下! 在过去几年中,依赖 ...

  7. 类图和对象图教程-类(Class)、接口(Interface)、协作(collaboration)、依赖关系(Dependency)、泛化关系(Generalization)、关联关系(Association)以及实现关系(Realization)

    类图的概念 (转) 一.概述 类图(Class Diagram)是描述类.接口.协作以及它们之间关系的图,用来显示系统中各个类的静态结构.类图是定义其他图的基础,在类图基础上,可以使用状态图.协作图. ...

  8. Postman 使用技巧之多环境测试及接口依赖关系处理

    一.前言 在日常开发中,除了正常的单元测试,某些情况我们还需要测试 HTTP 接口,团队中目前使用的是「 Postman 」这款 API调试 . HTTP 请求工具.通常我们将经常要测试的接口按照项目 ...

  9. python学习 day017打卡 类与类之间的关系

    本节主要的内容: 1.依赖关系 2.关联关系,组合关系,聚合关系 3.继承关系,self到底是什么? 4.类中的特殊成员 一.类与类之间的依赖关系 在面向对象的世界中,类与类中存在以下关系: 1.依赖 ...

随机推荐

  1. shared_ptr的原理与应用

    new与赋值的坑 赋值(assignment)和new运算符在C++与Java(或C#)中的行为有本质的区别.在Java中,new是对象的构造,而赋值运算是引用的传递:而在C++中,赋值运算符意味着& ...

  2. 运维日常错误总结(docker)

    一:Apache服务启动失败 报错原因:80端口被占用 分析:netstat -anp|grep 80 检查80端口的占用情况,发现是启动了nginx服务,占用了http服务 解决方式: 1:如ngi ...

  3. Laravel5如何向闭合函数内传递参数 where function 传参

    如上,怎么将$title 像$query一样,在函数内部使用? $result = UserMenus::with(['menu'=>function($query){ $query->w ...

  4. TensorRt安装

    1.下载 https://developer.nvidia.com/nvidia-tensorrt-5x-download 选择5 GA版本,注意选择与自己CUDA匹配的版本 2.安装 参考:http ...

  5. ESP8266--WIFI热点扫描

    现在,通常,为了让手机连上一个WiFi热点,基本上都是打开手机设置里面的WiFi设置功能,然后会看到里面有个WiFi热点列表,然后选择你要的连接上. 基本上你只要打开手机连接WiFi功能,都会发现附近 ...

  6. cursor-spacing 软键盘和input的距离

    指定光标与键盘的距离,单位 px .取 input 距离底部的距离和 cursor-spacing 指定的距离的最小值作为光标与键盘的距离. 例: 软键盘和input的距离300px

  7. 2016.09.03【初中部 NOIP提高组 】模拟赛A总结

    今天班主任不知道出了什么事,把整个班留了40多分钟,各种吹水谈人生.耽误了很多时间. #$%^& 这次第一题很神奇,通过枚举矩阵来确定三个单元格的位置,没想到,结果爆零. 刚开始看见这道题有费 ...

  8. 【leetcode&CN&竞赛】1196.How Many Apples Can You Put into the Basket

    题目如下: 楼下水果店正在促销,你打算买些苹果,arr[i] 表示第 i 个苹果的单位重量. 你有一个购物袋,最多可以装 5000 单位重量的东西,算一算,最多可以往购物袋里装入多少苹果. 示例 1: ...

  9. MongoDB学习笔记 1.1

    //1.安装MongoDB数据库 cd D:\Software\MongoDB\data\bin mongod --dbpath "D:\Software\MongoDB\data\db&q ...

  10. shiro框架学习-5-自定义Realm

    1. 自定义Realm基础 步骤: 创建一个类 ,继承AuthorizingRealm->AuthenticatingRealm->CachingRealm->Realm 重写授权方 ...